我正在制作一个使用 android-ocr(tesseract-ocr) 的示例代码从图像卡中提取数字的应用程序。我已经按照卡片字体训练了数据。如果卡片具有独特的背景,则检测到少量卡片,但如果卡片具有多背景(附样本),则该号码无法识别。即使卡号与背景有一点重叠也无法识别。
我尝试使用以下步骤来删除背景:
使用以下方法平滑裁剪的图像:
GaussianBlur(crop,crop, Size(3,3), 0, 0, BORDER_DEFAULT); cvtColor(裁剪,裁剪,CV_RGB2GRAY);
边缘检测使用sobel:
裁剪 = SobelEdgeDetect(裁剪);
转换为按位而不是 cv:
bitwise_not(crop,crop);
使用adaptiveThreshold 来移除阴影类型的东西:
自适应阈值(作物,作物,255,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,75,10);
使用这些步骤后,我得到了图像(附加的 bar-Process`png、citi1-Process.png、citi-Process.png),它以粗体显示,数字内有空格。在这种情况下,ocr 应用程序无法识别该号码。我不知道如何用粗体字母填充这些数字。
现在对我来说是一个巨大的挑战,即在不干扰卡片文本部分的情况下从任何图像卡片中移除背景。所以请建议我如何克服上述所有问题,具体如何去除图像的背景`我附上了一些示例和输出数据供您参考。
感谢和问候阿尼尔