扫描件 → 电子台账
把扫描件/纸质记录里的信息读出来、填进指定台账 Excel,替掉"人工逐格抄录"。本地 OCR,数据不出本机。
触发词
出现以下表述之一即触发(无需点名"技能"):
- 整理数据、录入台账、扫描件录入、OCR 录入、扫描件转表格、纸质记录电子化、台账录入
- 任意"XX 台账 / XX 记录"的录入诉求(描述里含"台账"即可命中)
执行流程
- 确认台账模板:读取目标台账文件(.xls / .xlsx)的表头行,得到列结构;若用户给了空表头或新台账,用
--columns传入列名。列结构来自台账本身,不硬编码任何业务字段。 - 确认扫描件目录:
--dir指定源目录(支持 .pdf / .jpg / .jpeg / .png)。 - 确定提取模式(见
scripts/ocr_extract.py):
-field字段型:扫描件是"标签→值"的表单(如某字段名后跟其值),找标签取右侧同行值。
-table表格型:扫描件是带格子的表格,按 y 聚类成行、x 排序列,按表头映射。
- 拿不准时默认field,结果不理想再切table。 - 跑提取:
python scripts/run_ledger.py --dir <扫描件目录> --out <台账.xlsx> [--mode field|table] [--columns "列1,列2,..."] [--keywords-json 字段映射.json]
- 运行环境用隔离 venv:C:/Users/admin/.workbuddy/binaries/python/envs/default/Scripts/python.exe(base python 会被版本更新清空,勿依赖)。缺依赖时pip install rapidocr-onnxruntime pymupdf numpy xlwt xlrd openpyxl pillow。
---keywords-json可选:JSON 对象{"列名": ["标签关键词1","标签关键词2"]},用于字段型模式下,把台账列映射到扫描件上的标签写法;不传则默认用列名本身当标签。 - 数据完整性校验:脚本自动输出「提取率 + 需人工复核清单 + 重复/不一致提醒」。
- 交付:把台账 Excel(+ 可选 Word 汇总,含提取率、复核清单、异常项)用 present_files 呈现,附复核清单。
字段型 / 表格型的判定与映射细节见 references/field-mapping.md;完整性规则见 references/data-integrity.md。
异常处理
- OCR 读不出 / 字段空:留空或填
【?】,进复核清单,绝不编造。 - 浅字漏识:
enhance()对比度增强后重试一次。 - 标签取错值(取到隔壁标签):
value_right用skip_labels跳过标签词,必要时用x_max限定取值窗口。 - 表格识别不准:先用真实台账表头校正映射关键词;仍不准则标注整表复核,不要硬填。
- 日期/编号类字段不一致:
report()打印提醒,不改。 - 依赖缺失 / 文件解析失败:按报错补装包;解析不了的源文件单独列出给用户。
什么时候停下来问我
- 发现重复(同一条记录出现两次)或错误(与已有台账冲突)→ 立即停下,列出冲突项问用户,不自动覆盖/去重。
- 台账实际数据与提取结果口径不一致 → 先确认口径再落地。
- 台账列结构不清楚或与扫描件字段对不上 → 先确认字段映射再跑。
- 涉及联网/上传的需求(默认禁止,本地 OCR)→ 需用户明确授权。
资源
scripts/ocr_extract.py— 通用 OCR 引擎:渲染/增强/OCR + 字段型与表格型提取 + 归一化scripts/run_ledger.py— 并行运行器:写台账 + 质量报告 + 完整性提醒references/field-mapping.md— 字段型/表格型映射方法与示例references/data-integrity.md— 数据完整性规则(看不清标注/不一致提醒/重复错误停下/不泄露)