ARTICLE · 1273756
银行流水PDF表格转Excel
把 PDF 里的表格搬进 Excel,我踩了四个坑
公众号推文 · 约 1800 字 · 工具类 / 职场效率
朋友处理一份 87 页的招标文件,里面塞了三十多张表格。
他想把这些表导进 Excel 做横向比价。
从我坐下到把文件发给他,一共 6 分钟。
他盯着屏幕看了半天,问:"你怎么弄的?我昨天搞了一整天。"
其实没什么玄机,只是我踩过的坑比他多几个。今天把四个坑都倒出来,顺便说说最后做成了什么。
坑一:Ctrl+C 再 Ctrl+V,表格必散架
这是所有人的第一反应,也是最快崩掉的一步。
原因有点反直觉:PDF 里根本没有"表格"这个东西。
你在屏幕上看到的那一圈圈线条,和里面的文字,在文件里是两套互不相干的东西。线条只是画出来的图形,文字只是散落在坐标上的字符。至于谁是表头、谁属于哪一行、哪一格是合并的——PDF 一概不知道,也不负责。
所以你按复制,得到的是"按绘制顺序排下来的一堆文字",不是"按阅读顺序排下来的表格"。
粘进 Excel 之后,你会看到身份证号跑到了月份列,金额孤零零地挂在最后一行,有的格子还会被拆成两行。
三十张表,光手动重排就得一晚上。
坑二:图片和扫描件,连文字都没有
比散架更绝望的是——什么都没有。
很多正式的 PDF 是扫描件,甚至是手机拍的。这类文件里没有一个文字层,整页只是一张图。
你全选、复制,出来是空白。
OCR 是唯一出路,但这里还有个细节:普通 OCR 只会把图片变成"一行行从左到右的文字",表格的结构照样丢。要保住单元格,OCR 得能识别出格线、判断每块文字落在哪个格子里。
这一步,能做到的工具其实不多。
坑三:数字全变成 1.23E+15,而且是真的丢了
这个坑最隐蔽,也最气人。
Excel 有一个老底子设定:数字最多认 15 位有效数字。
听起来够用,但我们天天打交道的数字,偏偏都超了:
身份证号,18 位 银行卡号,19 位 统一社会信用代码,18 位 订单号、快递单号,经常 20 位起步 手机号,看着 11 位没事,但带前导 0 的一粘贴,0 直接被吃掉
超了会怎样?
110101199001011234 丢进 Excel,显示成 1.10101E+17。
更糟的是:这不是显示问题。
你双击那个格子进去看,会发现它已经变成 110101199001011000——后三位被永久抹成了 0。再怎么调格式也回不来了,原始数据在写入那一刻就没了。
唯一的解法,是让这些格子从一开始就不要被当成"数字":先把单元格设成文本格式(Excel 里叫@),再把内容写进去。
道理简单,但很多导出工具根本不管这件事。因为它们内部就是按"数值"写进 Excel 的,图省事,也图你后面能算加减乘除。
问题是——身份证号需要做加法吗?
坑四:合并单元格,一转就错位
表格里只要出现合并单元格,事情就开始不讲道理。
一份报价单,"供应商"这一栏纵向合并了五行,"合计"横跨三列。这在纸上很清爽,可一旦要变成数据结构就麻烦了:那五个格子其实只有一个值,那三列其实只有一笔钱。
处理得糙的工具会怎么干?
要么把合并区域拆成五个格子,只有第一行有值,下面四行空着。你筛一下、排个序,数据立刻错位——"张三公司"只跟第一行绑着,后面几行全成了孤儿。
要么把值重复写进五个格子,看着齐整,可你一张透视表拉出来,金额被算了五遍。
一个真正能用的工具,得先把合并区域"摊平"成规整的网格:值落在该落的格子里,行列数对齐,一行不多一列不少。
这一步做不好,后面全是白搭。
后来我干脆自己做了一个
这四个坑,每一个都有现成的工具能解决其中一两个。
但我找了很久,没见过一个能同时解决四件的:认得出扫描件的格线,摊得开合并单元格,还愿意在导出时老老实实把每个格子设成文本。
于是有了现在这个东西:一个 Python 程序,双击就打开,左边是文件列表,右边是表格预览。
它干的事很朴素:
把 PDF 或图片加进来,填一次 Token(mineru.net 免费注册就能拿,不用付费) 点开始,走 MinerU 的精准解析,vlm 模型,表格结构识别最准的那一档 解析完先给你看,任何一个格子都能双击直接改——识别歪了当场修 确认没问题,再导出 Excel
所有能力里,我最在意的是导出那一步。
每个格子都按文本格式写进去,格式码锁死 @。
18 位身份证、20 位订单号、带前导 0 的手机号,导出来什么样,Excel 里就是什么样,一个字符都不会跑。
代价是这些格子不能直接参与计算——真要算,另起一列写 =VALUE(A2)。我认为这个取舍很值:数据保全比算得快重要得多。
几个实话
工具不是万能的,这几点得先说清:
靠 MinerU 的额度跑。免费额度有限,量大要考虑付费方案 复杂表格还是要人看一眼。跨页断开的表、一格塞了三行内容的表,机器也会有判断失误的时候——所以才有那个"双击修改"
















































































