如何删除图像卡的非文本部分

时间:2013-08-28 10:07:10

标签: java android c++

我正在制作一个应用程序,使用android-ocr(tesseract-ocr)的示例代码从图像卡中提取数字。 我按照卡片字体训练了数据。如果卡具有独特的背景,则检测到少量卡,但如果卡具有多个背景(附带样本)则数字无法识别。 即使卡号与背景重叠,也无法识别。

我尝试使用以下步骤删除背景:

  1. 使用以下方法平滑裁剪的图像:

    GaussianBlur(crop,crop,Size(3,3),0,0,BORDER_DEFAULT);          cvtColor(crop,crop,CV_RGB2GRAY);

  2. 边缘检测使用sobel:

    crop = SobelEdgeDetect(crop);

  3. 转换为按位而不是cv:

    bitwise_not(作物,作物);

  4. 使用adaptiveThreshold删除阴影类型:

    adaptiveThreshold(crop,crop,255,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,75,10);

  5. 在使用这些步骤之后,我得到了图像(附加条形码 - Process`png,citi1-Process.png,citi-Process.png),它在数字内部带有空格。在这种情况下,ocr应用程序无法识别该数字。 我不知道如何用粗体字母填写这些数字。

    现在我面临的挑战是从任何图像卡中删除背景而不会干扰卡片的文本部分。所以请建议我如何克服所有上述问题具体如何删除图像的背景  我附上了一些样本&输出数据供您参考。

    谢谢&问候 阿尼尔

0 个答案:

没有答案