ImproveQuality - kana112233/tesseract GitHub Wiki
#提高输出质量
有很多原因可能无法从Tesseract获得高质量的输出. 重要的是要注意,除非你使用非常不寻常的字体或新语言,重新训练Tesseract不太可能有所帮助.
-
[旋转/纠偏](#旋转 - 纠偏)
-
[透明度/Alpha通道](#透明度 - alpha通道)
-
[工具/库](#tools - libraries)
图像处理
在进行实际OCR之前,Tesseract在内部(使用Leptonica库)执行各种图像处理操作. 它通常做得很好,但是不可避免地会出现不够好的情况,这会导致准确性的显着降低.
在运行Tesseract时,您可以通过使用配置变量tessedit_write_images
到true
(或使用configfileget.images
)来了解Tesseract如何处理图像.
如果生成的tessinput.tif
文件看起来有问题,请在将图像传递给Tesseract之前尝试其中一些图像处理操作.
###反转图像
虽然tesseract版本3.05(及更早版本)处理倒置图像(深色背景和浅色文本)没有问题,但4.x版本在浅色背景上使用深色文本.
###重新缩放
Tesseract在DPI至少为300 dpi的图像上效果最佳,因此调整图像大小可能会有所帮助. 有关详细信息,请参阅常见问题解答.
“Willus Dotkom”对最佳图像分辨率进行了有趣的测试,并建议以像素为单位优化大写字母的高度.
Binarisation
![binarisation.png(https://github.com/tesseract-ocr/tesseract/wiki/binarisation.png)
这是将图像转换为黑白图像. Tesseract在内部进行此操作(Otsu算法),但结果可能不是最理想的,特别是如果页面背景是不均匀的黑暗.
如果您无法通过更好的输入图像进行修复,则可以尝试不同的算法. 请参阅ImageJ自动阈值(java)或OpenCV图像阈值(python) 或scikit-image Thresholding文档(python).
###去除噪音
![noise.png(https://github.com/tesseract-ocr/tesseract/wiki/noise.png)
噪声是图像中亮度或颜色的随机变化,可能使图像文本更难以阅读. Tesseract在二值化步骤中无法去除某些类型的噪声,这会导致准确率下降.
###旋转/纠偏
![偏斜linedetection.png(https://github.com/tesseract-ocr/tesseract/wiki/skew-linedetection.png)
歪曲的图像是指在不直接扫描页面时. 如果页面过于偏斜,Tesseract线分割的质量会显着降低,这会严重影响OCR的质量. 要解决此问题,请旋转页面图像,使文本行呈水平.
###边界
####扫描边框移除
![borders.png(https://github.com/tesseract-ocr/tesseract/wiki/borders.png)
扫描页面周围通常有黑色边框. 这些可能被错误地选为额外的字符,特别是如果它们的形状和渐变不同.
####缺少边框
If you OCR just text area without any border, tesseract could have problems with it. See for some details in tesseract user forum#427 . You can easy add small border (e.g. 10 pt) with ImageMagick®:
convert 427-1.jpg -bordercolor White -border 10x10 427-1b.jpg
###透明度/Alpha通道
某些图像格式(例如png)可以具有alpha-channel以提供透明度功能.
Tesseract 3.0x expects that users remove alpha channel from image before using image in tesseract. This can done e.g. with ImageMagick command:
convert input.png -alpha off output.png
Tesseract 4.00使用leptonica函数删除alpha通道pixRemoveAlpha():它通过与白色背景混合来移除alpha分量. 在某些情况下(例如[电影字幕]的OCR(https://github.com/tesseract-ocr/tesseract/issues/2048#issuecomment-438015376))这可能会导致问题,因此用户需要删除alpha通道( 或通过自身反转图像颜色预处理图像.
###工具/库
-
PRLib - 使用提高OCR质量的算法预识别库
例子
如果您需要一个如何以编程方式提高图像质量的示例,请查看以下示例:
- OpenCV - 旋转(Deskewing) - c ++示例
- Fred的ImageMagick TEXTCLEANER - 用于处理扫描的文本文档以清理文本背景的bash脚本.
- rotation \ _spacing.py - 用于自动检测文本图像的旋转和行间距的python脚本
- crop \ _morphology.py - 使用Python,OpenCV和numpy查找图像中的文本块
- 使用OpenCV和Python的信用卡OCR
- noteshrink - python示例如何清理扫描. 博客中的详细信息压缩和增强手写笔记.
- uproject text - python示例如何恢复图像的透视图. 博客中的详细信息Unject with text with ellipses.
- page_dewarp - 使用“立方表”模型进行文本页面去扭曲的python示例. 博客中的详细信息Page dewarping.
##页面分割方法
默认情况下,Tesseract在分割图像时需要一页文本.
如果你只是想要一个小区域的OCR尝试使用--psm
参数的不同分段模式.
请注意,在文字过于紧缩的情况下添加白色边框也可能有所帮助,请参阅[问题398](https://web.archive.org/web/20151209085049/https://code.google.com/p/tesseract
-OCR/问题/细节?ID = 398).
要查看支持的页面分段模式的完整列表,请使用tesseract -h
.
这是3.21的清单:
0 Orientation and script detection (OSD) only.
1 Automatic page segmentation with OSD.
2 Automatic page segmentation, but no OSD, or OCR.
3 Fully automatic page segmentation, but no OSD. (Default)
4 Assume a single column of text of variable sizes.
5 Assume a single uniform block of vertically aligned text.
6 Assume a single uniform block of text.
7 Treat the image as a single text line.
8 Treat the image as a single word.
9 Treat the image as a single word in a circle.
10 Treat the image as a single character.
11 Sparse text. Find as much text as possible in no particular order.
12 Sparse text with OSD.
13 Raw line. Treat the image as a single text line,
bypassing hacks that are Tesseract-specific.
##字典,单词列表和模式
默认情况下,Tesseract被优化以识别单词的句子. 如果您正在尝试识别其他内容,例如收据,价目表或代码,您可以采取一些措施来提高结果的准确性,并仔细检查相应的[细分方法](# 选择页面分割方法).
如果大多数文本不是字典单词,禁用Tesseract使用的字典应该会增加识别.
可以通过将configuration variablesload_system_dawg
和load_freq_dawg
设置为false
来禁用它们.
也可以在Tesseract用于帮助识别的单词列表中添加单词,或者添加常见的字符模式,如果您对所期望的输入类型有所了解,这可以进一步提高准确性. 这在[Tesseract手册]中有更详细的解释(https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#config-files-and-augmenting-with-user -数据).
如果您知道只会遇到该语言中可用字符的子集,例如只有数字,则可以使用tessedit_char_whitelist
配置变量.
请参阅常见问题解答.
注意Tesseract 4不支持此功能.有关解决方法,请参阅here.
##还有问题吗?
如果你已经尝试了以上内容并且仍然得到低准确度的结果,在论坛上询问寻求帮助,最好发布一个 示例图片.