提高 Tesseract OCR 的识别精度方法(ai) 最后更新时间:2025年11月11日 一、图像预处理(最关键) Tesseract 对输入图像质量非常敏感,良好的预处理能显著提升识别准确率。 1. 调整分辨率 推荐 DPI ≥ 300(理想为 300–600)。低分辨率图像会导致字符模糊。 可使用 ImageMagick 或 OpenCV 放大图像: ```bash convert input.png -density 300 output.png ``` 2. 二值化(黑白化) 将图像转为黑白(非灰度),有助于去除背景干扰。 使用自适应阈值(如 Otsu 算法)效果更好: ```python 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) ``` 3. 去噪 使用中值滤波、高斯模糊或形态学操作去除斑点和杂讯。 示例(OpenCV): ```python denoised = cv2.medianBlur(img, 3) ``` 4. 校正倾斜(Deskew) 文本行倾斜会严重影响识别。可使用霍夫变换或 Tesseract 自带的自动旋转功能(需启用)。 5. 对比度增强 提高文字与背景的对比度,尤其适用于扫描件或低质量照片。 6. 裁剪无关区域 去除边框、水印、页眉页脚等非文本内容。 二、Tesseract 参数优化 1. 指定合适的 PSM(Page Segmentation Mode) 默认是 PSM 3(全自动分页),但针对特定场景应手动设置: --psm 6:假设为统一区块的文本(适合表格或对齐文本) --psm 7:单行文本 --psm 8:单个单词 --psm 10:单个字符 示例: ```bash tesseract input.png output --psm 6 ``` 2. 选择正确的语言模型(-l) 使用最匹配的语言包,例如中文简体用 chi_sim,繁体用 chi_tra。 多语言混合:-l eng+chi_sim 确保已安装对应语言包(通过 tesseract --list-langs 查看) 3. 启用 LSTM 模型(Tesseract 4+) 默认已启用,但可显式指定: ```bash tesseract input.png output --oem 1 OEM 1:LSTM only(推荐) OEM 0:Legacy Tesseract engine OEM 3:默认(自动选择) ``` 4. 配置白名单/黑名单字符(适用于固定格式) 例如只识别数字: ```bash 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) ```python 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) ```
Comments | NOTHING