我正在寻找一种在图像中定位已知文字的方法。
具体来说,我正在尝试创建一个工具,将一组扫描页面转换为支持搜索和复制+粘贴的PDF。我理解这通常是如何完成的:OCR页面,保留文本的位置,然后将文本作为不可见的图层添加到PDF。 Acrobat内置了此功能,tesseract可以输出hOCR文件(包含已识别的文本及其位置),可由hocr2pdf用于生成文本图层。
不幸的是,我的源图像质量相当低(最多150 DPI,有大量的JPEG伪像,以及一些文本背后的非实体背景),导致相当差的OCR结果。但是,我确实有每页显示的文本副本(无图片和布局)。
将已知文本与扫描页面上的位置相匹配似乎更容易准确,但我没有发现内置此功能的任何软件。如何利用现有软件来实现这一目标?
编辑:文字的大小和字体各不相同,但文章的段落是一致的。
答案 0 :(得分:1)
让我想到的想法是互相关。因此,我会将您知道的单词列表放在页面上,并一次一个地渲染到画布上,以创建该单词的图片。您需要使用与文档中的单词类似的字体和大小 - 这是我在评论中提到的。然后,我将对扫描图像运行该图像的图像的标准化互相关,以查看它出现的位置。我会用ImageMagick完成所有这一切,它可用于Windows和OSX(在OS X上使用homebrew
)并包含在大多数Linux发行版中。
所以,让我们看一下你问题第二段的屏幕截图,找一下pretty
这个词 - 你提到非常糟糕的OCR 。
首先,您需要将单词pretty
渲染到白色背景上。命令将是这样的:
convert -background white -fill black -font Times -pointsize 14 label:pretty word.png
<强>结果:强>
然后使用来自here的Fred Weinhaus的脚本执行标准化的互相关:
normcrosscorr -p word.png scan.png correlation-result.png
Match Coords: (504,30) And Score In Range 0 to 1: (0.999803)
你可以看到比赛的坐标是504,30。
<强>结果:强>
另一个想法
另一个想法可能是使用Google的Tesseract-OCR并将标准字典替换为包含您正在处理的页面上的字词的文本文件...