You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ocrmypdf识别PDF工程图直径符号出错,求OCR优化方案

解决OCR识别工程图直径符号⌀的问题

问题根源分析

  1. Tesseract参数格式错误:你把所有Tesseract参数塞在单个字符串里,ocrmypdf会将整个字符串当作单个参数传递给Tesseract,导致它误以为这是一个参数文件名,从而报错"Can't open --psm 6 -c tessedit_char_whitelist=...",同时白名单里的直径符号被截断,仅保留了数字。
  2. 符号不匹配:你白名单里加的是ø(U+00F8),但实际需要识别的是⌀(U+2300),两个字符编码不同,导致白名单未生效。
  3. PSM模式不合适:PSM 6适用于连续文本块,工程图里的符号和数值通常分散排布,容易导致识别偏差。

具体优化方案

1. 修正Tesseract参数传递方式

ocrmypdf的tesseract_config需要传递字符串列表,每个参数单独作为列表元素:

import ocrmypdf

input_file = "C:/input.PDF"
output_file = "C:/output1.pdf"

# 正确参数格式:每个Tesseract参数单独列为列表项
ocrmypdf.ocr(
    input_file,
    output_file,
    deskew=True,
    force_ocr=True,
    tesseract_config=[
        '--psm', '7',  # 假设文本为单行,适配工程图标注排版
        '-c', 'tessedit_char_whitelist=0123456789⌀'  # 加入正确的直径符号⌀
    ]
)

2. 选择适配的PSM模式

根据工程图排版,推荐尝试这些PSM模式:

  • --psm 7:假设输入为单行文本,适合识别标注式的数值+符号组合
  • --psm 10:单独识别每个字符,适合分散的符号和数字
  • --psm 3:全自动模式(默认),若上述模式效果差可换回

3. 图像预处理提升识别率

工程图可能存在模糊、低对比度问题,可通过以下方式优化:

  • 启用ocrmypdf的阈值处理:添加--threshold参数,自动将图像转为黑白,强化符号边缘
  • 手动预处理:若PDF是扫描件,先将页面导出为图片,用图像工具(如GIMP)提高对比度、锐化后再进行OCR

4. 自定义Tesseract训练(进阶)

若上述方法仍不理想,可针对工程图字体训练Tesseract自定义字库:

  1. 提取工程图中的⌀和数字样本,生成训练用的.tif和.box文件
  2. 使用Tesseract训练工具生成自定义语言包
  3. OCR时通过--language参数指定自定义语言包

日志错误说明

之前日志中的read_params_file: Can't open --psm 6 -c tessedit_char_whitelist="0123456789",是因为参数格式错误导致Tesseract把整个参数字符串当成了要打开的配置文件,修正参数传递方式后该错误会消失。

内容的提问来源于stack exchange,提问作者Nick Stankat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 23:27:40