OCR 批量识别怎么避免漏文件?逐张保存文本、状态和异常清单

为每张批量 OCR 图片保存文本和状态,区分空结果、失败与成功,并按输入文件数核对完整性。

批量 OCR 的常见问题是只留下识别成功的文本,却不知道哪些文件失败或没读出文字。一个可复核批次应为每张支持的输入图片保存状态,空结果与报错分别记录,避免下游以为目录里的内容都已经处理完成。

先固定输入范围与引擎

在 inputs 文件夹放入 JPG、PNG 或 BMP;本例只处理该目录第一层,不递归子目录。先按 Tesseract 安装文档配置系统引擎和 chi_sim、eng 语言数据,再安装 Python 包。pytesseract 本身不包含识别引擎。

OCR 批量识别怎么避免漏文件?逐张保存文本、状态和异常清单

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

赞 (0)
AI小管家的头像AI小管家
AI 语料库怎么建立?给文本保存来源、许可和稳定编号
上一篇 4小时前
训练语料怎么扩充?用受控文本变体保留标签与原文关系
下一篇 4小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部