UltKit

PDF转JSON转换器

把PDF里的表格提取出来,转成JSON记录。表头行提供键名,每个表格行生成一个对象,结果可以直接载入代码使用。

数据转换器

或将CSV, TSV, TXT … 文件拖放到此处 ·

单个文件最大 95 MB· 最多 20 个文件· 30 分钟后删除

输出

文件在我们的服务器上处理,并在 30 分钟后删除。

使用方法

  1. 1

    上传PDF

    添加包含表格的对账单、价目表或报告。每批最多 20 个 PDF,每个不超过 95 MB。

  2. 2

    选择JSON结构

    JSON 结构默认为“对象数组”。如果表格没有可用的表头行,请在高级设置中切换为“数组的数组”。

  3. 3

    转换并检查

    点击转换为 JSON,下载文件,并在脚本使用之前,将几条记录与 PDF 核对一遍。

PDF转JSON会读取 PDF 中的表格,以列标题作为键,把每一行写成一个 JSON 对象,让锁在可打印文档里的数据变成代码可以遍历的内容。

为什么PDF并不知道自己包含表格

Adobe 于 1993 年推出 PDF,目的是让页面在任何地方看起来都一样。该格式在 2008 年被标准化为 ISO 32000-1,至今仍以页面为单位。在文件内部,表格只是按 x、y 坐标绘制的一组文本片段,片段之间通常画有几条线。除非作者导出的是带标签的 PDF(PDF 1.4 中新增的选项,许多工具仍然不支持),否则文件中没有行、列和表头的概念。

因此,要得到 JSON,就必须重建表格:把基线相同的片段归为一行,找出分隔各列的垂直空隙,并把顶行当作列名。对于从记账软件、电子表格和报表工具导出的 PDF,效果很好,因为每个单元格都位于规整的行上。但对于在排版软件中手工绘制的表格、跨多列的单元格以及任何扫描件,效果不佳。

谁需要把PDF转成JSON,用来做什么

  1. 发票与对账单解析

    开发者收到的供应商发票或银行对账单是 PDF,需要把明细行变成记录,以便与订单核对。

  2. 已发布的参考表格

    资费表、费率表和价目表往往只以 PDF 形式发布。转成 JSON 后,应用或网站无需重新录入即可加载。

  3. 测试数据与原型

    产品团队把规格文档中的表格变成测试用的固定数据或模拟 API。

PDF发票表格转换后的JSON示例

三列表格生成的对象数组
[
  {
    "Item": "Paper A4, 500 sheets",
    "Qty": 4,
    "Amount": 23.96
  },
  {
    "Item": "Toner cartridge",
    "Qty": 1,
    "Amount": 64
  }
]

哪些PDF能转换为JSON,哪些不能

from ↓ · to →JSONCSVXLSX
由软件导出的 PDF由软件导出的 PDF to JSON: yes由软件导出的 PDF to CSV: yes由软件导出的 PDF to XLSX: yes
扫描或拍照生成的 PDF– 扫描或拍照生成的 PDF to JSON: no– 扫描或拍照生成的 PDF to CSV: no– 扫描或拍照生成的 PDF to XLSX: no
supported not offered扫描页面没有文字层。请先识别文字,再进行转换。

PDF

便携式文档格式(PDF)

PDF 由 Adobe 于 1993 年创建,并在 2008 年成为开放的 ISO 32000 标准。它固定了文字、字体、图片和版式,使文档在每块屏幕和每台打印机上看起来都一样。PDF 可以包含表单、签名、链接、附件和可搜索文本,其中 PDF/A 变体用于长期归档。固定的版式使 PDF 难以编辑,而扫描版 PDF 除非经过 OCR,否则只包含图片。所有浏览器和操作系统都能打开。

压缩方式
–
透明度
支持
动画
不支持
发布年份
1993 · Adobe
PDF 转换器

JSON

JavaScript 对象表示法

JSON 是一种轻量级结构化数据文本格式,由 Douglas Crockford 在 21 世纪初推广,并被标准化为 RFC 8259 和 ECMA-404。它用简单易读的语法表示对象、数组、字符串、数字、布尔值和 null。它是网络 API、配置文件以及几乎所有编程语言之间数据交换的默认格式。它没有内置注释、日期或模式,嵌套很深的大文件没有查看器就很难阅读。

压缩方式
–
透明度
–
动画
–
发布年份
2001 · Douglas Crockford
JSON 转换器

当为阅读而发布的文档需要提供给程序使用时,就需要把 PDF 转为 JSON:把发票明细导入记账脚本,把公布的费率表载入应用,或把报告中的数字用于 API 调用。

PDF转JSON常见问题

扫描版PDF可以转换为JSON吗?

不能直接转换。扫描件只是一张页面图片,没有可供转换器读取的字符。请先用图片转文字工具进行文字识别,再转换识别出的表格。

JSON里的键名从哪里来?

开启首行为表头时,键名取自每个表格的第一行,所以标题为 Amount 的列会在每条记录中成为键 Amount。如果第一行本身就是数据,请关闭该设置并选择“数组的数组”,每一行会被写成一个普通列表。

为什么€1.234,50这样的金额仍是字符串?

按 RFC 8259 的定义,JSON 数字只允许数字、一个小数点、负号和指数,不能有其他内容。货币符号或千位分隔符会让该值变成文本。请在代码中去掉这些符号,或先在电子表格中清理该列。

PDF表格转JSON好还是转CSV好?

后续由代码读取时用 JSON,因为每个值都带有键,之后也可以嵌套。后续由电子表格或导入页面读取时用 CSV;PDF转CSV会把同样的行写成纯文本行。

JSON会保留PDF的版式吗?

不会。字体、颜色、分页、徽标以及表格在页面上的位置都属于呈现效果,而 JSON 只保存数值。得到的是按阅读顺序排列的单元格内容。