我正在使用tesseract从图像中读取文本。由于我的binaryimage输入不会是纯白色背景上的简单文本,因此我只得到50%的正确输出。
有没有办法对图像进行预处理,以便从tesseract获得正确的输出?我已经尝试过灰度缩放和二值化的图像使用大津的方法,但没有改善。
由于我是使用java来完成这些工作的,如果有人能够共享任何java库或步骤的详细信息,从而从tesseract获得更好的结果,那将是非常有帮助的。
我没有得到适当的imagemagick文档来在我的java代码中使用它。在此方面的任何帮助都将不胜感激。
示例图像(at&t的任何无线账单)
2条答案
按热度按时间gkl3eglg1#
我试图通过灰度缩放和二值化来优化我的输出,但是没有用。然后我尝试boofcv来锐化我的图像,我得到了90%的优化输出。
在锐化图像之前,如果分辨率不够大,我们可以使用以下代码重新缩放图像:
}
万一有人陷入同样的境地。
fbcarpbf2#
我认为你的账单扫描的分辨率可能太小了。我相信你会得到更好的结果,如果你有一个更高的分辨率图像(更大的尺寸)。您也可以尝试将扫描保存为非有损压缩格式。你可以尝试局部阈值。但我不认为这将有助于这么小的文本。不过,在imagemagick中,您可以使用-lat命令来实现这一点。
根据需要调整值。我还有一个bash unixshell脚本textcleaner,在其他图像上可能更好。你可以在http://www.fmwconcepts.com/imagemagick/textcleaner/index.php