0

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

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

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

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

  2. 边缘检测使用sobel:

    裁剪 = SobelEdgeDetect(裁剪);

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

    bitwise_not(crop,crop);

  4. 使用adaptiveThreshold 来移除阴影类型的东西:

    自适应阈值(作物,作物,255,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,75,10);

使用这些步骤后,我得到了图像(附加的 bar-Process`png、citi1-Process.png、citi-Process.png),它以粗体显示,数字内有空格。在这种情况下,ocr 应用程序无法识别该号码。我不知道如何用粗体字母填充这些数字。

现在对我来说是一个巨大的挑战,即在不干扰卡片文本部分的情况下从任何图像卡片中移除背景。所以请建议我如何克服上述所有问题,具体如何去除图像的背景`我附上了一些示例和输出数据供您参考。

感谢和问候阿尼尔

4

0 回答 0