3.6 KiB
3.6 KiB
原生文本、OCR 与模型辅助复核
识别顺序
inspect_pdf.py检查页数与加密状态;extract_text.py分批检查原生文本。- 可靠原生文字直接使用。对
text_quality.suspect_pages调用本地ocr_text.py,普通扫描件不先做整本图片识别。 - PDF 任务中的单张截图、扫描图片用
ocr_image.py。文字识别以 OCR 为主,大模型用于具体疑难内容的辅助判断。 - OCR 返回
needs_review、低置信度区域,或文字与表格结构/阅读顺序冲突时,先按原图质量合理提高 DPI(最多 400)。仍有疑问或涉及手写、复杂公式、图表、印章时,用render_pdf.py只渲染相关页,通过当前环境实际可用的图像查看/识别能力辅助复核。可使用已安装的 image-recognition skill;不能虚构工具或识别结果。 - 复核时提供页码、待判断问题与 OCR 候选,区分“确认原文”“模型推测”“无法辨认”。不要让模型补写看不见的金额、账号、日期或姓名。辅助结果不能覆盖其他页已可靠提取的文字。
needs_ocr: false 表示原生文字无明显问题,不代表图中的趋势、流程、版式和关系已经被理解。任务需要这些非文本信息时可以按需查看相关页,不重复 OCR 全文。
PDF 页 OCR
通过 execute_skill_script 调用 scripts/ocr_text.py,仅传参数:
--input '/usr/local/src/pdf/tmp/task/source.pdf' --pages '2,5-6'
- 页码从 1 开始,一次最多 4 页;默认 260 DPI,允许 150–400,单页渲染不超过 2000 万像素。
--timeout是每页渲染超时,默认 180 秒,范围 1–600。- 默认
--max-chars 24000,最高 60000。 - 字符游标:
next_offset > 0时用--pages <next_page> --start-offset <next_offset>续读该页;next_offset = 0时用remaining_pages继续。单页续读结束后仍要继续先前未处理的页面。 - 使用镜像内 RapidOCR/ONNX 模型。固定脚本明确指定本地模型路径,缺少模型立即失败,不触发下载。渲染 PNG 只在脚本内部临时使用,完成即清理。
单张图像 OCR
调用 scripts/ocr_image.py:
--input '/usr/local/src/pdf/tmp/task/scan.png'
支持 PNG/JPEG/WebP/TIFF/BMP,最大 25 MiB、2000 万像素、单帧;自动按 EXIF 调整方向。--max-chars 和 --start-offset 用于续读可靠文本。多页 TIFF 不默默只读首帧,应先得到按页文件或 PDF。
结果解读
- 仅使用
usable_for_summary: true的text作为正文。empty/sparse/low_confidence不等于空白页面;需要核验。 - 单行置信度低于 0.60 的文字不会混入可靠正文,即使整页平均置信度很高。
review_regions给出text_candidate、置信度和像素框;这些是待核验候选,不能当事实。 needs_review: true可能与usable_for_summary: true同时出现:表示该页有可用文字,也有未确认区域。complete_ocr_coverage只有全部请求页处理完成且无需复核时才为真。review_regions最多返回 40 个,每段候选最多 500 字;截断时有显式标记。需要完整复核时查看对应原图,不把列表上限误认为没有其他疑点。- OCR 的阅读顺序按几何位置排序,多栏、跨栏标题或复杂表格不保证逻辑顺序。表格先尝试
extract_tables.py;扫描表格用 OCR 字框对齐并核验行列、表头、合计,不把平铺文字直接当结构化表格。 - 引用使用真实 PDF 页码;记录实际阅读/识别范围,不能只处理前几页就声称已覆盖全文。