用途与实际影响
这项功能怎样使用
为什么需要它
模型可能没读出浅色小字,也可能只处理了部分页面;若最后只显示“成功”或“没有文字”,我会误用结果。这里先分清执行、覆盖、质量和文字检测,再说明各自证据,保留具体字符的复核责任。
举个实际例子
我可以说:“识别分数很高,但这个型号最后一位我还是看不清。”系统会指出对应页面和区域,让我回到原图复核;若需要更正,会把更正单独记录,不改写原始识别结果。
最后我会得到什么
可以选便于复制的纯文字、便于看表格的排版文件,或带页码位置的结构化文件;另有说明告诉我是否读全、哪里不确定。关键字仍须对照原图。
正常时
内容、位置和质量说明都可读取,正式文件与输入身份一致。
发现问题时
低置信度、部分覆盖或关键字分歧如实保留;摘要帮助定位,不能抹掉原始错误。
入口不可用或证据不足时
缺少有效结果文件或证据绑定时不能宣称已验证;普通空结果保持无法判断。
从哪里开始
拿到 LocalOCR 结果后,在同一 AI 任务中说出要核对的字段、页码或疑问。
需要准备什么
- 这次结果文件或任务标识
- 原图与关键字段
从开始到拿到结果
- 1
先读结果状态
分别看执行完成、覆盖页数、识别质量和空结果依据。
- 2
对照原图定位
按页和区域核对姓名、数字或浅色小字;必要更正独立记录。
- 3
留下已确认与仍不确定的字
交回原始识别、对照原图后的更正和未确认项;文件完整性检查或高分都不能代替关键字符复核。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
输出与客观状态合同已实现关键规则与设计选择
先看 display_summary(人话状态摘要),再读正文、坐标与客观文件。
ok=true、空 TXT、空 blocks 或 cache_hit 都不能单独证明原图无字。
原生视觉的场景解释和 OCR(光学字符识别) 的精确文字证据独立保留,冲突时回查原图。
本模块用到的名词
- coverage(处理覆盖)
- 本次实际页/帧是否全部处理,不是正文逐字完整。9 月 3 日采购表 1/1 页 complete 仍漏标题;9 月 17 日两页 VL 完整覆盖仍有“请/清”错字。
- quality(结果质量)
- 依据当前证据判断是否足以解释结果;不能简单当作逐字准确率。结构块未提供可用置信度时可以保持 unknown(未验证),即使原始文字行有高分。
- indeterminate(无法确定)
- 当前证据不能支持确定结论;失败、部分处理或普通空结果都不能伪装成无字。
专业定义
先看人话状态,再看正文和原图;空文本、低分与处理失败不是同一回事。
解决什么
防止空结果被误报为无字、执行完成被误报为正确,以及手工更正覆盖了原始识别证据。
当前怎样实现
- outputs.py 输出按页 TXT、保留结构的 Markdown、含位置/顺序/类型的 JSON;display_summary 是对既有客观字段的确定性投影,不修改结论。
- objective_result.py 分开 execution.status、coverage.status、quality.status、objective_outcome 与 failure;文字检测结论只在 text_detected、no_text_detected、indeterminate 中选择。
- 生产者可以在独立检测证据成立时形成 no_text_detected;未保存时 evidence.verification_status 仍为 not_persisted。调用方只有在 completed、complete、sufficient、verified 及实际非空负向证据文件的字节和身份复验全部成立后,才采纳为已验证的持久结论或正式缓存;当前内置检测证据主要限于近乎均匀图片。
- 客观文件使用 media.objective-result.v1,复核 schema(数据结构)、size_bytes、SHA-256、原件、请求、模型、配置与所有正式输出绑定;旧式缺文件结果不能补猜成已验证。
- 输入快照、独立页/帧计数和实际运行身份约束结果提交;每页原子检查点只作部分证据。完整覆盖、无排除范围与独立负向证据全部成立才支持无字结论,图像均匀提示本身不够。
- 若独立视觉复核更正某个关键区域,更正单列绑定原始 source hash(原件指纹)和 rect(区域),不得覆盖 OCR(光学字符识别) 原始文件或冒充引擎自动结果。
执行流程
- 1
先读摘要:执行到哪、覆盖怎样、是否低置信或增强。
- 2
选择 TXT/Markdown/JSON 中适合下一步的文件。
- 3
用页码与区域找到关键字,并核对同一原图。
- 4
遇到空结果,检查独立负向证据,而不是只看文字长度。
- 5
把确认、更正与未知分开,保留原始识别和实际输出路径。
边界
- 内容正确性与字节完整性不同;哈希通过不证明文字或原件事实正确。
- 原始文字、结构化文件与另行复核更正保持独立。
- 识别到印章或姓名不证明真实性或人物身份。
失败与恢复
- 空 TXT 或空 blocks
- 检查执行、覆盖、质量和独立证据;条件不全就保持 indeterminate。
- 模型平均分高但关键字有疑问
- 回原图核对精确区域,不让平均值覆盖细小错误。
- 客观文件缺失、哈希或身份不一致
- 拒绝正式复用或无字结论,保留错误与原件定位。
- 原件在处理过程中变化
- 不提交旧结果;固定最终原件后再决定是否重新处理。
真实入口
E:\Projects\Tools\LocalOCR\localocr\outputs.py内容文件与人话摘要
E:\Projects\Tools\LocalOCR\localocr\objective_result.py客观结果与负向证据
E:\Projects\Tools\LocalOCR\localocr\service.py输入快照与提交检查
E:\Projects\Tools\LocalOCR\tests\test_objective_result.py空结果、质量与证据回归
sample-table-actual.md下载 2026 年 9 月 3 日真实 Markdown 原文件(UTF-8),保留表格与合计而未补写标题;这是历史可复核产物,不是当前版本复跑。
sample-table-actual.json9 月 3 日实际 JSON 原样副本,可核对 P0、被排除的标题及质量未知和页覆盖;与后来合成测试分开。
如何验证
- 源码审查确认人话摘要不改写客观结论,空结果条件与普通错误分开。
- 合成单元测试覆盖负向证据、损坏、缺失、低置信度和实际字节绑定;这不能替代原图人工复核。
- 重要数字和小字必须由真实样本逐区复看;没有复看的部分不能声称已经确认。
与其他模块的关系
这个模块解释结果能信到哪;任务复用模块据同一合同检查缓存,下游材料与文档工具只消费明确有效的内容。
