![Tesseract:旧文档中的 OCR 十六进制和二进制字符串](https://linux22.com/image/1598374/Tesseract%EF%BC%9A%E6%97%A7%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%20OCR%20%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E5%92%8C%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我对 Tesseract 有一些疑问
语境
我目前正在研究东德 (GDR) 于 80 年代开发的一种旧加密算法。我用 C# 实现了该算法。现在我有大约 30 页的测试用例需要检查。因为我不想手动输入每个二进制/十六进制字符串,所以我想使用 Tesseract(或任何可用的免费软件)对其进行 OCR。
问题
我无法获得满意的结果。下面将详细说明。
当前状态
(抱歉,我不能直接发布图片)该文档如下所示: 页面的一部分/详细信件
幼稚的方法
使用默认设置(我使用德语,相关部分应该无关紧要)我得到的结果很糟糕。
tesseract -l deu input.tiff output pdf
结果如下这
尤其是零,识别起来比较麻烦。单词、字母和 1 的识别稍微好一些。
我尝试过的(预处理)
- 旋转页面
- 增加对比度
- 对图像进行二值化
- 侵蚀/扩大图像以填充字母之间的小间隙
最终结果如下这。据我所知,关于 OCR,这应该会让事情变得更好一些。
我尝试过的(Tesseract 设置)
我的配置文件如下所示:
load_system_dawg F
load_freq_dawg F
language_model_penalty_non_dict_word 0
language_model_penalty_non_freq_dict_word 0
tessedit_create_pdf T
tessedit_char_whitelist 0123456789ABCDEF
我基本上告诉 Tesseract 不要尝试用字母组成有用的单词,只允许十六进制字符串所需的字符。
如你看到的这里这会导致结果略好一些,但并非在所有情况下都如此。最后一行中的一些零被检测到得更好。在 F 之间没有发生任何有用的事情。
使用神经网络与传统 OCR(--oem 0/1)的设置会略有不同。传统算法会将许多 0 检测为 9(从不将其检测为 0),但更一致(但效果不佳)
问题
我还能做些什么来改善结果?我知道我可以额外训练神经网络,但据我所知,这需要一些努力,我想避免(为自己构建 Tesseract,让 ML 工作,制作标记的测试数据等)。
还要别的吗?
感谢您的帮助。