表格识别
这项能力到底在做什么
Section titled “这项能力到底在做什么”表格识别,简单说,就是把图片、扫描件、截图、PDF 里的表格,先拆成系统能继续使用的 行、列、表头 和 单元格数据。
很多企业材料里,真正重要的信息不是一大段正文,而是藏在表格里。
比如数量、金额、规格、检测值、时间、项目结果、汇总数据,往往都在表格里一格一格排着。
人眼看表格很快,但系统如果只拿到一张图片,通常只知道“这里有一堆字”,却不知道:
- 哪些字属于同一行
- 哪些字属于同一列
- 哪一列是项目名
- 哪一列是数值
- 哪一行是汇总
- 哪一格是空值,哪一格是真的缺失
表格识别真正解决的,就是把“看起来像表”的东西,变成“结构清楚、能计算、能比对、能入库的数据表”。
它和 OCR文字识别 很像,但重点不一样。
OCR文字识别 更关心“字是什么”;表格识别 更关心“这些字分别落在哪一行、哪一列、哪一个字段下面”。
它通常接收什么输入
Section titled “它通常接收什么输入”这项能力接进来的,通常是带有表格结构的文件或图片。
常见输入包括:
Excel截图- 表单拍照
- 纸质表格扫描件
- 多页
PDF里的统计表 - 系统导出的报表截图
- 邮件附件里的对账表、盘点表、检测表、登记表
一起带进来的上下文,常见有这些:
- 文档类型
- 上传时间
- 业务编号
- 表格所属对象
- 企业定义的重点字段
- 单位信息
- 币种、数量口径、日期口径
上下文很重要。因为很多表格不是只要“拆出来”就够了,还要知道:
- 这一列的单位是什么
- 这一页和上一页是不是同一张表
- 同名字段是不是同一个意思
- 汇总行要不要单独标记
它能输出什么结果
Section titled “它能输出什么结果”表格识别最后交出去的,应该是一张结构化的数据表,而不是一张“认过字的图片”。
常见输出包括:
| 输出项 | 说明 |
|---|---|
| 表格边界 | 这一页里哪些区域是真正的表格 |
| 表头结果 | 每一列分别代表什么 |
| 行列结构 | 哪些内容属于同一行、同一列 |
| 单元格文本 | 每个单元格里到底是什么 |
| 合并关系 | 哪些表头或单元格是合并出来的 |
| 空值标记 | 是本来就空,还是识别失败 |
| 可信度 | 当前整张表或某些单元格的稳定程度 |
| 异常提示 | 哪些行列关系可疑、哪些数据建议人工复核 |
如果后面还要做统计、对账、回写、报表分析,这些输出都很关键。
它在内部是怎么跑起来的
Section titled “它在内部是怎么跑起来的”表格识别真正难的地方,不只是把字认出来,而是把“结构”也认对。
它在内部通常会经过下面这条链。
1. 先判断页面里有没有表格
Section titled “1. 先判断页面里有没有表格”有些文件是纯正文,有些是一页里既有正文又有表格。
所以系统第一步通常会先判断:这一页里哪里是表格区域,哪里不是。
2. 再把表格边界和线框找出来
Section titled “2. 再把表格边界和线框找出来”如果表格有清楚的线框,系统会先找横线、竖线和外框。
如果没有完整线框,就要根据文字排布和对齐关系,推断出行列边界。
这一层很关键,因为表格识别一旦把行列切错,后面字段关系就会全乱。
3. 再识别表头和数据区
Section titled “3. 再识别表头和数据区”不是所有行都一样重要。
系统通常会先区分:
- 哪些是表头
- 哪些是明细行
- 哪些是备注
- 哪些是合计或汇总行
只有先把这些角色分清,后面的字段才不会挂错位置。
4. 再提取每个单元格里的内容
Section titled “4. 再提取每个单元格里的内容”这一步会把每个格子里的文字提出来,并且尽量保持它原来的位置关系。
真正要拿出去用的时候,系统不只是知道“这里有字”,而是知道:
- 这一格在第几行第几列
- 它对应哪个表头
- 它是不是跨行跨列
5. 再做字段清洗和格式统一
Section titled “5. 再做字段清洗和格式统一”表格里的内容往往看起来整齐,但拿来直接算时,常常并不干净。
比如:
- 数字带千分位
- 百分比写法不统一
- 单位分散写在表头或备注里
- 日期格式混用
- 空白格和缺失值混在一起
所以系统通常会再做一次清洗和标准化。
6. 最后判断这张表能不能直接交出去
Section titled “6. 最后判断这张表能不能直接交出去”如果表头识别不清、行列错位、合并关系不稳、关键数值可信度低,这张表就不适合直接下发。
这时系统会把可疑位置圈出来,交给人工确认。
表格识别的详细内部流程图
Section titled “表格识别的详细内部流程图”flowchart TB
A[输入表格图片 / 扫描件 / PDF / 截图] --> B[检测页面中的表格区域]
B --> C{是否找到有效表格?}
C -->|否| D[标记为非标准表格或异常文件]
C -->|是| E[识别表格边界与行列线]
E --> F[推断行列结构<br/>处理无线框、弱线框、错位情况]
F --> G[识别表头、明细区、汇总区、备注区]
G --> H[提取每个单元格内容]
H --> I[处理合并单元格与跨行跨列关系]
I --> J[字段清洗与格式统一]
J --> K[检查表头完整性、行列对齐和关键值可信度]
K --> L{结构是否清楚且关键字段可用?}
L -->|否| M[标记可疑单元格并转人工复核]
L -->|是| N[输出结构化表格结果]
M --> O[人工修正后回流]
N --> P[交给对账、统计、归档、回写等下游流程]
O --> P
它最后会把什么交给下游流程
Section titled “它最后会把什么交给下游流程”表格识别对业务真正有价值,是因为它能把一张“看起来像表”的图片,交成一张“机器可继续处理的表”。
常见会交出去这些结果:
- 标准化后的表头
- 每一行明细数据
- 汇总行或合计行标记
- 单元格原始位置
- 单位和格式信息
- 可疑单元格列表
- 整张表的可信度说明
有了这些结果,下游才能继续做:
- 盘点统计
- 数据对账
- 质量记录整理
- 金额汇总
- 报表分析
- 系统回写
它怎么接入业务才真正有价值
Section titled “它怎么接入业务才真正有价值”表格识别最怕的,不是识别不出来,而是识别出来以后还是没人接着用。
真正常见、也最有价值的接法,一般有下面几种:
1. 接在资料上传和收集入口后面
Section titled “1. 接在资料上传和收集入口后面”只要有人上传表单、截图、扫描件,系统就先把表格结构拆出来。
这样后面的系统拿到的就不是图片附件,而是已经能按行列处理的数据。
2. 接在统计和汇总前面
Section titled “2. 接在统计和汇总前面”很多团队每天要把多张表拼成一张总表。
如果前面没有表格识别,这一步往往只能靠人工复制粘贴。
3. 接在对账和核对前面
Section titled “3. 接在对账和核对前面”后面如果要比数量、比金额、比批次、比检测值,前面必须先拿到结构化表格。
表格识别就是这一步的入口。
4. 接在归档和查询前面
Section titled “4. 接在归档和查询前面”原来一张扫描表只能“存起来”,现在可以按字段查、按列筛、按条件找。
这会让老资料真正变得可用。
什么情况下必须转人工
Section titled “什么情况下必须转人工”表格识别虽然很强,但下面这些情况最好让人工复核:
- 表格拍得太斜,行列明显变形
- 同一页里有多个表,而且边界贴得很近
- 表头是多层结构,跨行跨列很多
- 表格没有线框,只能靠文字对齐去猜
- 图片模糊,数字和单位不清楚
- 合计行、备注行和明细行混在一起
- 有些格子里是印章、手写字、符号混排
- 识别出来的行列关系和业务规则明显冲突
真正稳的企业做法,不是要求系统每一张表都全自动,而是让系统先处理大部分标准表,把结构复杂、风险高的部分交给人确认。
为什么这项能力站得住
Section titled “为什么这项能力站得住”表格识别之所以在企业里很有价值,是因为大量关键数据本来就住在表格里。
1. 它解决的不是“认字”,而是“认结构”
Section titled “1. 它解决的不是“认字”,而是“认结构””很多时候字都认出来了,但只要行列关系错了,整张表就不能用。
表格识别补的,正是这层结构能力。
2. 它特别适合重复量大、格式相近的表
Section titled “2. 它特别适合重复量大、格式相近的表”只要企业里长期处理同类表单、报表、登记表、对账表,这项能力的价值就会越来越明显。
因为人工最容易把时间花在重复搬表上。
3. 它能直接带动后面的统计和比对自动化
Section titled “3. 它能直接带动后面的统计和比对自动化”没有结构化表格,很多分析和核对都只是空谈。
表格识别一旦打通,后面的对账、统计、报表生成才真正有基础。
4. 它边界明确,容易设计人工兜底
Section titled “4. 它边界明确,容易设计人工兜底”标准表格让系统先处理,复杂表格让人补一刀。
这种接法在企业里最稳,也最容易真正落地。