OCR 智能体能读英文却读不出中文时,先把智能体拿开,用相同图片单独运行 Tesseract。确认可执行程序、中文语言包和页面分割模式后,再检查工具调用参数。这比反复改提示词更能定位语言识别问题。
区分三个常见症状
- TesseractNotFoundError:Python 找不到识别引擎,不是中文能力问题。
- Failed loading language 或 Error opening data file:对应语言数据没有正确加载。
- 程序正常但中文乱码、漏字:再检查图像质量、语言参数和分割模式。
pytesseract 是 Python 调用封装,pip 安装它不会替你安装 Tesseract 引擎或语言数据。按 Tesseract 安装文档安装系统程序;Windows 的文档列出第三方发行构建,应核对来源,不把它说成官方自带安装器。

检查同一个进程看到的引擎与语言包
python -m pip install pytesseract pillow
tesseract --version
tesseract --list-langs
语言列表应包含 chi_sim 和 eng;简体中文与英文混排才使用 chi_sim+eng。若终端存在但 Python 不存在,先检查 Python 运行环境的 PATH 或显式设置实际安装路径。语言数据的搜索目录要以这台机器的安装与 --list-langs 输出为准。
用固定图片比较分割模式
准备清晰的 chinese.png,其中写入你已知的测试文字“订单编号 A102,数量 3”。这是自制验证文本,不是已经识别出的模型结果。保存以下代码为 check_chinese_ocr.py,再运行它。
import pytesseract
from PIL import Image
# Windows: set this only if your installed executable is not on PATH.
# pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
print("version:", pytesseract.get_tesseract_version())
languages = pytesseract.get_languages(config="")
print("languages:", languages)
if "chi_sim" not in languages or "eng" not in languages:
raise RuntimeError("required language data chi_sim/eng is missing")
image = Image.open("chinese.png").convert("RGB")
for psm in (6, 11):
text = pytesseract.image_to_string(image, lang="chi_sim+eng",
config=f"--psm {psm}", timeout=20)
print(f"PSM={psm}")
print(text)
PSM 6 假设一个统一文本块,PSM 11 用于稀疏文字;选择时看图片布局,不是认为模式编号越大越准确。本文未安装 Tesseract 引擎执行该识别,未声称测试句已经被正确读出。
回接智能体前怎样验收
把两次结果与原图逐字对照,特别检查 A102、数字 3 和标点。记录哪个模式漏行、哪类字符混淆;换一张相同布局的图片再核对,不能只靠一条成功样本。
单独运行已正确、智能体调用仍不正确时,核对工具是否真的传了 chi_sim+eng、实际读取的图片是否被缩小或转换、可执行路径是否相同。把“没有语言包”“输入无效”“识别为空”分别返回状态,不都包装成成功空字符串。
繁体中文应另核对 chi_tra 等适用语言数据;手写、反光和严重倾斜不能仅靠补一个语言包解决。
资料与适用范围
本文依据 2026 年 10 月 1 日读取的项目资料编写。安装后请记录实际依赖版本;版本升级时先用小样本核对接口和输出。
- pytesseract 项目:引擎路径、语言选择与超时接口
- Tesseract 安装文档:系统引擎与平台安装
- Tesseract ImproveQuality:PSM 6 与 11 的布局含义
- Tesseract 数据文件文档:语言数据及 chi_sim/chi_tra
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30701.html