提高 Tesseract OCR 的识别精度方法(ai)


一、图像预处理(最关键)
Tesseract 对输入图像质量非常敏感,良好的预处理能显著提升识别准确率。

  1. 调整分辨率
    推荐 DPI ≥ 300(理想为 300–600)。低分辨率图像会导致字符模糊。

可使用 ImageMagick 或 OpenCV 放大图像:

convert input.png -density 300 output.png
  1. 二值化(黑白化)
    将图像转为黑白(非灰度),有助于去除背景干扰。

使用自适应阈值(如 Otsu 算法)效果更好:

import cv2
img = cv2.imread('input.png', 0)
_, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cv2.imwrite('output.png', thresh)
  1. 去噪
    使用中值滤波、高斯模糊或形态学操作去除斑点和杂讯。

示例(OpenCV):

denoised = cv2.medianBlur(img, 3)
  1. 校正倾斜(Deskew)
    文本行倾斜会严重影响识别。可使用霍夫变换或 Tesseract 自带的自动旋转功能(需启用)。
  2. 对比度增强
    提高文字与背景的对比度,尤其适用于扫描件或低质量照片。
  3. 裁剪无关区域
    去除边框、水印、页眉页脚等非文本内容。

二、Tesseract 参数优化

  1. 指定合适的 PSM(Page Segmentation Mode)
    默认是 PSM 3(全自动分页),但针对特定场景应手动设置:

--psm 6:假设为统一区块的文本(适合表格或对齐文本)
--psm 7:单行文本
--psm 8:单个单词
--psm 10:单个字符
示例:

tesseract input.png output --psm 6
  1. 选择正确的语言模型(-l)
    使用最匹配的语言包,例如中文简体用 chi_sim,繁体用 chi_tra。

多语言混合:-l eng+chi_sim
确保已安装对应语言包(通过 tesseract --list-langs 查看)

  1. 启用 LSTM 模型(Tesseract 4+)
    默认已启用,但可显式指定:
tesseract input.png output --oem 1
OEM 1:LSTM only(推荐)
OEM 0:Legacy Tesseract engine
OEM 3:默认(自动选择)
  1. 配置白名单/黑名单字符(适用于固定格式)
    例如只识别数字:
tesseract input.png output -c tessedit_char_whitelist=0123456789

三、使用自定义训练模型(高级)
如果你的文本具有特殊字体、行业术语或排版(如发票、车牌、手写体),可考虑:
使用 Tesseract 的训练工具(如 tesstrain)训练自定义 .traineddata 模型。
利用开源预训练模型(如针对身份证、车牌优化的模型)。
四、后处理
对 OCR 输出进行拼写检查、正则校验或 NLP 纠错(如使用 SymSpell、LanguageTool)。
结合上下文规则过滤不合理结果(如日期格式、电话号码)。
五、其他建议
避免 JPEG 压缩:使用 PNG 等无损格式保存预处理后的图像。
测试不同版本:Tesseract 5.x 相比 4.x 在 LSTM 和布局分析上有改进。
结合 Layout 分析工具:如 pdf2image + Tesseract + LayoutParser 处理复杂文档。
示例完整流程(Python + OpenCV + Tesseract)

import cv2
import pytesseract
读取图像
img = cv2.imread('input.jpg')
转灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
二值化(Otsu)
_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
保存临时文件
cv2.imwrite('temp.png', thresh)
OCR
text = pytesseract.image_to_string('temp.png', lang='chi_sim', config='--psm 6 --oem 1')
print(text)

声明:一代明君的小屋|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 提高 Tesseract OCR 的识别精度方法(ai)


欢迎来到我的小屋