AI AI 资源社
菜单

扫描表格怎么转CSV?识别、错列和漏行检查教程

2026-10-23 09:18 12 阅读

摘要: 用一张自制订单表说明扫描表格转CSV的核对方法,提供原图与正确CSV,重点检查前导零、行数、列数和金额。

把图片中的表格变成CSV,最重要的不是“看起来整齐”,而是每个值落在正确的行和列。识别工具即使把金额抄对,只要把它移到下一笔订单,得到的数据也不能直接使用。

本文使用三笔虚构文具订单,提供清晰原图和人工校对的标准CSV。这是教学数据与纠错演示,没有把手工编写的错误样例冒充某款OCR的实际输出,也不提供识别准确率。

三笔虚构文具订单的原始表格,包含订单号、品名、数量、单价和金额
自制原图,含3条数据和1行表头。

第一步:先确定需要保留的结构

这份表只有五列:订单号、品名、数量、单价(元)、金额(元)。“0078”是标识符,前面的两个零属于内容;数量是整数;单价和金额用元计。先写清这些规则,再让AI识别,能减少把编号当数字、把元当万元的误解。

多页扫描件还要记录每页行数、跨页续行和重复表头。不要让AI把每一页都独立汇总后又把汇总行作为订单导入,否则很容易重复计算。

第二步:让识别过程显露不确定项

请逐行转录图片中的表格,不做汇总,不补全看不清的内容。
字段:订单号、品名、数量、单价(元)、金额(元)。
订单号按文本保留前导零;金额只保留原单位。
先给CSV,再单独列出“需要人工复核”的单元格及原因。
无法辨认的值留空,不用上下文猜数。

这段是可以复制的任务描述,不保证任何模型都能完全执行。图片倾斜、分辨率低或有印章遮挡时,应优先换更清楚的图;反复要求“认真识别”,无法恢复原图里没有的信息。

第三步:按行、列、字段三层核对

行:数据应有3行,顺序对应0078、0079、0080,表头不算订单。列:每行必须有5个字段,空值也要保留位置。字段:检查编号前导零、小数点以及品名中的文字,而不是只看数字列。

下面是手工构造的错误示例:78,文件夹,12,8.50,102.00。字段数正确,金额也正确,但编号已经改变。另一类错误是0079,胶带,3,36.00,缺少单价后,金额被放进了第四列。两者需要不同的检查方法。

第四步:把算术当作报警器

样例中,12×8.50=102.00,3×12.00=36.00,5×6.00=30.00,合计168.00元。逐行检查数量×单价与金额是否一致,再检查总计。金额不一致应回看原图,不能擅自把识别值“修正”为计算值——真实单据可能存在折扣、税额或运费。

总计一致也不能证明逐行正确:两笔金额互换,总额仍可能不变。所以要同时检查订单号与行内字段关联。

第五步:用CSV解析器检查,导入时指定文本列

CSV不是用空格对齐的表格。依据常见CSV格式规则,含逗号、换行或双引号的字段需要正确引用,字段里的双引号需转义。应使用解析器,避免直接按逗号切字符串。

import csv
with open("aizys-table-correct.csv", encoding="utf-8-sig", newline="") as f:
    rows = list(csv.reader(f))
assert len(rows) == 4  # 1行表头 + 3行数据
assert all(len(row) == 5 for row in rows)
assert rows[1][0] == "0078"

本站已执行这些结构检查。Excel直接打开CSV时可能自动把编号转成数字,应通过导入向导把“订单号”列指定为文本。CSV文件里保留了0078,不等于所有软件打开后都会原样显示。

交付前保留哪三份文件

保留原图、未经人工改写的识别输出、校对后的CSV,并另记改了哪一格及依据。真实项目中可按“页码—行号—列名”定位,避免只交最终表却无法追查。若原图本身看不清,应标注待确认,不要为了凑齐表格补写数据。

若你已经有Excel文件,下一步应检查工作簿本身的公式和隐藏页,参见AI处理Excel前的结构检查。

资料来源与核查日期

资料核查:2026年10月22日至23日。产品条件可能调整,具体操作以当前官方页面为准。

标签: 暂无标签