混合语言单据的跨行表格:先恢复行身份,再让 AI 提取字段

发布时间:2026/10/25 20:35:06

混合语言单据的跨行表格:先恢复行身份,再让 AI 提取字段 一份海运单据里品名可能换行数量在下一页表头又重复了一次。如果只让模型“提取成数组”输出常常十分整齐行却已经错配。错误最难发现的地方是每个字段单独看都像真的。我会先建立行与页面证据再做字段规范化。这里讨论文档工程不判断报关、退税或税率是否适用。文档搜索不等于结构重建Cloudflare在2026年10月1日宣布AI Search正式可用并说明扫描PDF的OCR能力。官方变更说明 搜到一段相关文字与恢复一张跨页表格的行列关系是不同任务。检索片段不能自动充当原始表格。数据模型至少保留页码、行标识、原始单元格和提取状态。跨页延续关系要有证据同一个明细编号、明确续页标记或人工确认。不能仅凭相邻位置拼接。内图的连线只合并同一行身份重复表头被排除。若两个页面有相同编号却属于不同单据应先按文档ID隔离。不让模糊匹配静默覆盖以下例子接收已经人工标记行ID的片段只按明确ID合并。遇到冲突就停止不猜哪一份更可信。const assert require(node:assert/strict); function mergeRows(parts) { const rows new Map(); for (const p of parts) { if (!p.id || !Number.isInteger(p.page) || p.page 1) throw new Error(missing row evidence); const row rows.get(p.id) || { id: p.id, pages: [], fields: Object.create(null) }; for (const [key, value] of Object.entries(p.fields)) { if (Object.hasOwn(row.fields, key) row.fields[key] ! value) throw new Error(conflicting field: key); row.fields[key] value; } if (!row.pages.includes(p.page)) row.pages.push(p.page); rows.set(p.id, row); } return [...rows.values()]; } const row mergeRows([ { id: docA:7, page: 1, fields: { item: demo } }, { id: docA:7, page: 2, fields: { quantity: 2 } } ])[0]; assert.deepEqual(row.pages, [1, 2]); assert.equal(row.fields.quantity, 2); assert.throws(() mergeRows([ { id: x, page: 1, fields: { n: 2 } }, { id: x, page: 2, fields: { n: 3 } } ])); console.log(row-merge: 3 assertions passed);保存为row-merge.cjs运行node row-merge.cjs。这个示例验证合并策略不验证OCR能否正确生成行ID真实系统还应限制字段名、数据类型和单据大小防止任意字段进入业务对象。前端要让错配显眼复核页面可以左右并排一侧保留原页一侧展示行结构。点击一行时同时高亮涉及的多个页面片段并提示跨页合并原因。冲突字段用并列候选展示不要悄悄选择最后一次出现的值。本地样本没有真实海运提单、税务凭证或多语言OCR不能据此宣称提取精度。它只保证一件小事当上游证据冲突时下游不会仍然得到一行看似正常的数据。
延伸阅读

更多相关文章

2026/10/25 20:35:06

AI 识别票据之后:金额、币种和原文证据要分开校验

票据图片变成JSON,只完成录入的一部分。界面显示total为1200时,用户还需要知道它是哪一种币种,模型有没有把“1.200,00”按另一种格式解释。比“全自动记账”更值得做好的是,让人快速发现不该自动入账的字段。 2026年10月19日&am…

2026/10/25 20:35:06

把一张穿孔卡做成可导出的 SVG

复古界面最容易做出“像真的”,也最容易顺手写下“仿真”。一张浅黄色卡片,配上等距孔位,就有了老机器的气息;但它并没有因此成为历史设备的编码器。 这个小工具只做一件事:把一段短 ASCII 文本转换为八位二进制&…

2026/10/25 20:35:06

ASCII 图像先校正字符比例

把照片变成字符画,最直观的办法是把灰度映射到一串字符。可第一次做出来,圆形常常变成长椭圆:问题未必在灰度公式,而在字符本身不是正方形。 等宽字体只保证字符之间等宽,不保证一个字格的宽和高相等。假设实测字格宽…

2026/10/25 21:50:37

无Tool Calling的结构化Agent:用Schema约束LLM输出

1. 这个“无 Tool Calling”的Agent,到底在对抗什么?你有没有试过这样写一个Agent:给它一段用户问题,让它调用天气API、查数据库、发邮件、读文件……然后发现代码越写越厚,错误日志越堆越多,调试时要同时盯…

2026/10/25 21:50:37

GEO获客工程化落地:从地理围栏到AIGC的七步闭环

1. 项目概述:这不是一场普通的技术访谈,而是一份GEO获客工程化落地的实操手册“GEO高级优化师”“落地工程师”“AIGC应用工程师”——这三个头衔叠在一起,不是炫技,而是当前真实业务场景中正在发生的角色融合。我接触过太多团队&…

2026/10/25 21:50:37

鸿蒙元服务+蓝耘MaaS:故宫AI导游开发实战全记录

国庆第三天,我在故宫午门广场被人群挤得怀疑人生。旁边一位大哥举着手机,屏幕怼着太和殿的脊兽,嘴里反复念叨“这排小兽到底哪个是仙人、哪个是骑凤仙人”。那一刻我突然意识到,与其租一台像砖头一样的官方讲解器、排队等人工导游…

2026/10/25 21:45:36

激光雷达3D点云目标检测:从原理到实战全解析

做自动驾驶算法这几年,有个经常被问到的问题:“想入坑3D点云目标检测,到底先学什么?”每次我都想说,先别急着刷一堆论文,先把激光雷达点云这个最朴素、最本质的数据形态吃透,再上模型就顺了。这…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑