如何提高Tesseract的OCR文本准确性?

4
我使用谷歌的 Tesseract API 创建了一个基本的应用程序来识别文本,并将其与我的相机应用程序集成。它工作得很好,但唯一的问题是准确性,有时文本被识别为随机字符,我猜准确率约为50%。
此外,当它尝试在图像中扫描超过四个单词时,应用程序会崩溃。
String ocrText = baseApi.getUTF8Text();
baseApi.end();

这里的baseApi是Tesseract API类的对象。

我需要使用不同的数据结构来保存识别出的文本吗?还是有其他原因导致超过四个单词无法被识别?


3
你所需要的是更好的OCR引擎。 - Tomato
1个回答

1

Tesseract API类提供了isValidWord方法来检查字符串是否为有效单词。您可以使用此方法来检查识别出的字符,从而提高输出的准确性。

我正在使用Tess4j进行开发,它是tesseract-ocr的Java JNA包装器,在检查后给出了相当不错的结果。

不准确的结果可能是由于文本大小引起的,请查看this。它说:“精度在10pt x 300dpi以下迅速下降,在8pt x 300dpi以下迅速下降。”

此外,无法检测超过4个单词取决于许多因素,例如测试图像的种类(具有多少功能),图像的大小,平台等。


谢谢,但我想知道我们如何改善识别呢? 例如,如果您看到Robert Theis在https://github.com/rmtheis/android-ocr上传的项目,您会发现他使用了图像增强算法,即使他使用与我相同的Tesseract API,识别率也更高。 - Android2390
1
当然,图像预处理可以提高OCR引擎的准确性,但需要额外的时间成本。对于预处理,您可以:增加图像的DPI,调整图像大小,还可以检查模糊/锐化。文本和背景之间的高对比度可以更好地识别。之后尝试去噪和二值化图像。这将显著提高准确性。 - nexus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接