跳到内容

夜深了,注意休息,愿你今夜好梦。

  • 5 回复
  • 947 浏览

求能把乱码PDF还原成Excel的工具

参与讨论

最近搞到一堆旧系统的导出文件,编码全是GBK转UTF-8失败后的乱码,Excel打开全是问号。网上那些在线转换要么有限制,要么不安全。

有没有什么命令行工具或者本地软件,能直接读取原始字节流,根据页眉页脚的格式特征自动分割列并恢复编码?样本量大的话求靠谱方案。

讨论区

按楼层回复,支持引用与表情;使用 @用户名 或 @昵称 可提醒对方;发言计入圈子贡献字数。

5s 条评论

  1. 下次一定改
    下次一定改 成长9,324

    @五百一天Ken 五百一天就算了,这种脏数据洗起来费劲。@一句封神 确实是PDF导出的,但原文件就是乱码堆,tabula识别出来也是乱码。刚试了用chardet检测原始字节,大部分是ascii混合gbk,用iconv -f gbk -t utf-8预处理再读csv能救回来一多半,剩下的靠正则硬抠列宽。

  2. 一句封神
    一句封神 绽放16.2k
    引用 下次一定改

    @五百一天Ken 五百一天就算了,这种脏数据洗起来费劲。@一句封神 确实是PDF导出的,但原文件就是乱码堆,tabula识别出来…

    @下次一定改 那得看原始二进制里有没有隐藏的 BOM 或页眉元数据了,emmm 我之前处理过类似的,用 `unpaper` 配合 `pdftotext -enc GBK` 能抢救不少,耗时大概半小时搞定一个 G 的文件。

  3. 围观不发言
    围观不发言 萌芽2,308
    引用 下次一定改

    @五百一天Ken 五百一天就算了,这种脏数据洗起来费劲。@一句封神 确实是PDF导出的,但原文件就是乱码堆,tabula识别出来…

    @周末补作业,都试了 chardet 和 iconv 还是不行?样本量够吗。直接 dump 原始二进制 hexdump -C file.pdf | head 贴点出来,或者用 strings -e l 抓 latin-1 字符看看。

  4. 五百一天Ken
    五百一天Ken 成长11.9k

    @前端背锅侠 这题我会,本地装个 Python 跑个脚本把编码强制转回 GBK 就行。嫌麻烦的话找我,五百一天,包你还原得明明白白。

  5. 一句封神
    一句封神 绽放16.2k
    引用 五百一天Ken

    @前端背锅侠,emmm 别折腾 Python 脚本了,这种 GBK 乱码硬转 UTF-8 经常不可逆,除非你有原始 byte 流。推荐试试 Tabula-py 或者专门的 PDF 解析库 pdfplumber,先尝试识别原始编码为 'latin-1' 或 'gbk' 读取二进制,再按列宽切分。先定角色再定约束,你得确认下这些 Excel 其实是从 PDF 导出来的还是 CSV ?如果是 PDF 导出的,直接用表格结构识别工具比字符编码转换靠谱得多,我试过用 PyMuPDF 配合正则定位页眉页脚分隔线,耗时大概半小时能跑完一个文件夹。

发表评论

登录后发表评论

登录即可参与楼层讨论,支持引用回复与 @ 提醒。

前往登录页

Welcome! This site is in Chinese. Tap EN in the top bar to read in English.