JavaCV - 改进 ocr

Posted

技术标签:

【中文标题】JavaCV - 改进 ocr【英文标题】:JavaCV - improve for ocr 【发布时间】:2017-08-14 18:37:01 【问题描述】:

假设我想改进一张热敏纸的图片,我正在使用 JAVA CV,但我的图片全黑了。

我在这里举个例子:

代码如下:

CvScalar min = cvScalar(100, 100, 130, 0);//BGR-A
CvScalar max= cvScalar(140, 110, 255, 0);//BGR-A
cvInRangeS(image, min, max, imgThreshold);

更新:

我正在尝试将图像转换为灰度但没有成功。

IplImage image = cvLoadImage("example6.jpg");

IplImage imgThreshold = cvCreateImage(cvGetSize(image), 8, 1);
 cvInRangeS(image, cvScalar(hueLowerR, 100, 100, 0), cvScalar(hueUpperR, 255, 255, 0), imgThreshold);
   cvSaveImage("test1.jpg", imgThreshold););

【问题讨论】:

你能详细说明你想要做什么吗? 谢谢。我想从票中提取信息。想象一下,我确实有一张肯德基的票,我想提取财政号码 @John 让我这样问——你知道 OCR 还没有达到人类视觉的水平。是什么让您认为使用当前最先进的技术可以实现您想要的? @sashoalm 我已经可以解析图像了,但是我在某些单词和数字上遇到了一些问题,所以我正在尝试在 OCR 之前改进图像。 您是否尝试过任何改进 OCR 检测的方法? 【参考方案1】:

如果你想提高 OCR 检测的准确率,你必须提高你输入的图像的质量。

    你可以试试Contrast Limited Adaptive Histogram Equalization(我用python做了以下):

    您可以在灰度图像上应用二进制阈值:

您可能想知道我是如何获得合适的阈值的...好吧,看看我不久前发布的THIS ANSWER。

【讨论】:

我正在尝试将图像转换为灰度但没有成功。 \n IplImage image = cvLoadImage("example6.jpg"); IplImage imgThreshold = cvCreateImage(cvGetSize(image), 8, 1); cvInRangeS(图像, cvScalar(hueLowerR, 100, 100, 0), cvScalar(hueUpperR, 255, 255, 0), imgThreshold); cvSaveImage("test1.jpg", imgThreshold);); 结果图片全黑 您是否按照我发布的答案计算了中位数?

以上是关于JavaCV - 改进 ocr的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Microsoft OCR 改进文本识别?

使用模糊文本改进 Tesseract OCR 结果

有没有办法用小字体改进 tesseract OCR?

如何使用 Pytesseract 文本识别改进 OCR?

改进 OCR/图像识别的预处理

使用 OpenCV 改进文本二值化/OCR 预处理