提高 tesseract ocr 结果的质量
Improve quality of tesseract ocr result
我正在使用 JNI 为 Android 开发 OCR 应用程序,并使用 OpenCV 和 Tesseract 在 C++ 下开发代码。它将用于从应用拍摄的照片中读取带有字母数字 ID 的徽章。
我开发了一个处理图像预处理的代码,以获得如下所示的"readable image":
我使用 tesseract 为 "reading" 图像编写了以下函数:
char* read_text(Mat input_image)
{
tesseract::TessBaseAPI text_recognizer;
text_recognizer.Init("/usr/share/tesseract-ocr/tessdata", "eng", tesseract::OEM_TESSERACT_ONLY);
text_recognizer.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
text_recognizer.SetImage((uchar*)input_image.data, input_image.cols, input_image.rows, input_image.channels(), input_image.step1());
text_recognizer.Recognize(NULL);
return text_recognizer.GetUTF8Text();
}
预期的结果是"KQ 978 A3705",但我得到的是"KO 978 H375"。
我提出了 https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality. In addition, reading the docs from https://github.com/tesseract-ocr/docs 中关于提高图像质量的所有建议,我尝试使用多边形对图像进行近似以获得 "better" 特征。我使用的图像是这样的:
有了这张图片,我得到了 "KO 978 A3705"。结果明显比上一个好,但是还不行。
我认为我传递给 tesseract 的经过处理的图像足以获得良好的结果,但我不明白。我不知道还能做什么,所以我问你的想法,以解决这个问题。我需要一个准确的结果,我想我可以用我得到的处理后的图像得到它。请出主意! =)
我注意到通过一些扩张,结果 ORC 结果改善得非常好!对我来说,这是解决方案
我正在使用 JNI 为 Android 开发 OCR 应用程序,并使用 OpenCV 和 Tesseract 在 C++ 下开发代码。它将用于从应用拍摄的照片中读取带有字母数字 ID 的徽章。
我开发了一个处理图像预处理的代码,以获得如下所示的"readable image":
我使用 tesseract 为 "reading" 图像编写了以下函数:
char* read_text(Mat input_image)
{
tesseract::TessBaseAPI text_recognizer;
text_recognizer.Init("/usr/share/tesseract-ocr/tessdata", "eng", tesseract::OEM_TESSERACT_ONLY);
text_recognizer.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
text_recognizer.SetImage((uchar*)input_image.data, input_image.cols, input_image.rows, input_image.channels(), input_image.step1());
text_recognizer.Recognize(NULL);
return text_recognizer.GetUTF8Text();
}
预期的结果是"KQ 978 A3705",但我得到的是"KO 978 H375"。
我提出了 https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality. In addition, reading the docs from https://github.com/tesseract-ocr/docs 中关于提高图像质量的所有建议,我尝试使用多边形对图像进行近似以获得 "better" 特征。我使用的图像是这样的:
有了这张图片,我得到了 "KO 978 A3705"。结果明显比上一个好,但是还不行。
我认为我传递给 tesseract 的经过处理的图像足以获得良好的结果,但我不明白。我不知道还能做什么,所以我问你的想法,以解决这个问题。我需要一个准确的结果,我想我可以用我得到的处理后的图像得到它。请出主意! =)
我注意到通过一些扩张,结果 ORC 结果改善得非常好!对我来说,这是解决方案