批量 OCR 的常见问题是只留下识别成功的文本,却不知道哪些文件失败或没读出文字。一个可复核批次应为每张支持的输入图片保存状态,空结果与报错分别记录,避免下游以为目录里的内容都已经处理完成。
先固定输入范围与引擎
在 inputs 文件夹放入 JPG、PNG 或 BMP;本例只处理该目录第一层,不递归子目录。先按 Tesseract 安装文档配置系统引擎和 chi_sim、eng 语言数据,再安装 Python 包。pytesseract 本身不包含识别引擎。

python -m pip install pytesseract pillow
建议使用 Python 3.11。每次运行保存引擎版本,先对一张相同布局的扫描图核对 PSM 6 是否合适。本文未安装引擎运行这批 OCR,代码中的状态说明不是已经获得的识别结果。
逐文件记录结果与异常
保存代码为 batch_ocr.py,运行 python batch_ocr.py。输出目录 ocr_outputs 与输入分开,原图不覆盖。
from pathlib import Path
import csv
from PIL import Image
import pytesseract
files = sorted(p for p in Path("inputs").iterdir()
if p.suffix.lower() in {".png", ".jpg", ".jpeg", ".bmp"})
if not files:
raise ValueError("no supported input images")
print("engine", pytesseract.get_tesseract_version())
if not {"chi_sim", "eng"}.issubset(pytesseract.get_languages(config="")):
raise RuntimeError("missing chi_sim or eng language data")
out = Path("ocr_outputs")
out.mkdir(exist_ok=True)
with (out / "status.csv").open("w", newline="", encoding="utf-8-sig") as f:
writer = csv.DictWriter(f, fieldnames=["file", "status", "text_chars", "error"])
writer.writeheader()
for path in files:
row = {"file": path.name, "status": "error", "text_chars": 0, "error": ""}
try:
with Image.open(path) as image:
text = pytesseract.image_to_string(image.convert("RGB"),
lang="chi_sim+eng", config="--psm 6", timeout=20)
(out / (path.name + ".txt")).write_text(text, encoding="utf-8")
row.update(status="ok" if text.strip() else "no_text",
text_chars=len(text.strip()))
except (OSError, RuntimeError, pytesseract.TesseractError) as error:
row["error"] = type(error).__name__
writer.writerow(row)
f.flush()
print("input_images", len(files), "review", out / "status.csv")
怎样确认没有悄悄漏文件
status.csv 的数据行数应等于本例支持格式的输入文件数;逐行核对 file 名称。ok、no_text、error 三类合计应等于输入数,no_text 不能当成识别成功。
文本文件使用完整输入文件名再加 .txt,例如 a.jpg.txt 与 a.png.txt,避免同名不同扩展名互相覆盖。人为放入一个扩展名为 .png 的损坏文件,确认报告留下 error 行;这是一种读者验收步骤,本文未声称已执行。
怎样处理失败与重跑
先解决全局引擎或语言包错误,避免对所有文件重复失败。对单文件异常,检查能否正常打开、是否需要转正或改善拍摄;针对 no_text 逐张确认是否确实无字,再考虑换分割模式。
复跑会覆盖本例的文本和状态清单。需要保留历史批次时,先改为新的输出目录,并保存输入列表与参数。金额、编号、日期等字段应回查原图,不能因为文本非空就自动录入。
资料与适用范围
本文依据 2026 年 10 月 1 日读取的项目资料编写。安装后请记录实际依赖版本;版本升级时先用小样本核对接口和输出。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30734.html