指南
如何从 PDF 提取产品数据
供应商 PDF 中包含您的目录所需的规格参数,但格式无法直接导入。这里介绍将其转化为结构化产品数据的四种方法,以及如何选择。
产品数据提取,是指把文档中印刷的数值——型号、尺寸、材料、容量、额定值、警告——转化为系统可以使用的字段。对于少量产品,手动复制就足够了。但如果供应商目录有数百个 SKU,且每个制造商的 PDF 版式都不同,那么您选择的方法将决定上架需要多长时间,以及有多少错误会进入您的店铺。
下面我们比较四种常见方法,然后介绍无论采用哪种方法都很重要的检查事项。
从输出出发:先定义产品数据结构
在提取任何内容之前,先确定需要哪些字段以及采用什么形式。小家电的数据结构可能包括型号、品牌、EAN、以毫米为单位的宽/高/深、以千克为单位的重量、以瓦为单位的功率、电压、材料、颜色和警告。预先定义单位和允许的取值,才能让不同供应商的提取数据具有可比性。
如果您在多个渠道销售,请将每个字段映射到这些渠道使用的属性名称(例如 Shopify 的产品选项或 WooCommerce 的属性),这样提取结果无需再次重新整理即可复用。
方法 1:手动复制粘贴
由人打开 PDF,将数值输入或粘贴到电子表格或产品表单中。这种方法无需任何工具,可以处理任何版式,因此大多数团队都从这里起步。
随着数量增加,成本也会上升:速度慢、注意力容易分散,而且转录错误——型号中错位的数字、取自错误列的数值——事后很难发现。手动录入适用于小型目录,或作为自动化方法之上的审核环节。
方法 2:PDF 表格提取工具
表格提取工具(包括开源方案和 PDF 编辑器的导出功能)可以检测数字版 PDF 中的表格,并将其导出为 CSV 或 Excel。当数据确实位于规整的表格中时,这类工具速度很快。
但对于写在正文中的数值、合并单元格、跨页表格和扫描文档,它们就力不从心了,而且返回的是原始表格而非带名称的字段——您仍需将列映射到自己的数据结构,并清理表头、单位和脚注。
方法 3:模板或分区解析
基于模板的解析器允许您针对某一特定版式,定义每个字段在页面上的位置。配置完成后,采用该版式的所有文档都能得到一致的提取结果,适合大量相同格式的文档,例如来自同一发件方的发票。
供应商数据表很少如此统一。每个制造商——往往每条产品线——都需要自己的模板,而供应商一旦更改设计,模板就会失效。对于来自众多供应商的目录,维护成本很快就会超过收益。
方法 4:AI 提取
AI 提取使用语言和视觉模型,像人一样阅读文档:无论型号出现在页眉、表格还是句子中,它都能找到,并按您的数据结构返回带有数值和单位的字段。由于不依赖固定位置,一次设置就能处理多种供应商版式,包括扫描页面。
代价是 AI 的输出必须经过审核。好的工具会为提取的值显示置信度指示和来源依据,让审核人员可以把精力集中在不确定的值上;当文档中没有说明时,它们会将字段留空或加以标记,而不是猜测。Doc2Shelf 的 PDF 产品数据提取功能会为每次提取评估置信度和完整度,并记录所提取事实的页码和简短引文;经审核的记录可用于生成商品列表和合规草稿。
如何选择方法
一个实用的经验法则:
- 约 20 个产品以内,或一次性新增:按清晰的数据结构手动录入。
- 规整的数字版表格、一两家供应商:表格提取工具加后期清理。
- 大量相同版式的文档:模板解析。
- 供应商众多、版式多样或有扫描版 PDF:AI 提取加人工审核。
确保提取数据准确的检查事项
无论采用哪种方法,导致大多数错误的问题都是相同的。请将以下检查纳入您的审核环节:
- 型号映射:当一份数据表涵盖多个型号时,确认每个数值属于正确的型号列。
- 单位:统一单位(mm 与 cm、W 与 kW),并让每个数值都带上单位。
- 脚注与条件:容量或运行时间等数值通常取决于所述的测试条件。
- 标识码:逐字符核对 EAN/GTIN 校验位和型号。
- 缺失或相互矛盾的数值:向供应商询问,而不是推断文档中没有的数值。
- 可追溯性:让源 PDF 与记录保持关联,以便任何人日后都能重新核对某个数值。
提取方法并排对比
上述四种方法的差别,与其说在于能读取什么,不如说在于决定其准确性的因素以及所需的设置工作量。OCR 也属于对比的一部分,但它是一个处理层而不是一种方法:它把扫描页转换为文本,仍然需要借助其他方法把文本转换为字段。
准确性从来不只取决于方法本身。它取决于您输入的文档、您的字段结构对每个字段定义得有多清晰,以及审核环节有多严格——因此值得用您自己的供应商 PDF 样本进行测量,而不是依赖已发布的数据。
| 方法 | 准确性取决于 | 设置工作量 | 输出 | 最适合 |
|---|---|---|---|---|
| 手动录入 | 审核人员的专注度和清晰的字段结构 | 无 | 已命名字段,按录入内容 | 小型目录;一次性新增;审核环节 |
| 复制粘贴或 PDF 转 Excel 导出 | 真实的文本层和整洁、无合并单元格的表格 | 低 | 原始文本或表格,需手动映射 | 来自一两家供应商的整洁数字表格 |
| 模板或区域解析 | 每份文档的版式完全一致 | 每种版式的设置工作量高,版式变化时需重新设置 | 已命名字段 | 大批量的单一固定版式 |
| OCR | 扫描分辨率、对比度、倾斜度、字体、语言 | 低到中 | 仅文本 | 使扫描页可供其他方法读取 |
| 基于 LLM 的提取 | 字段结构的清晰度、文档质量、审核纪律 | 每种版式的设置工作量低;需要审核工作流 | 带有值和单位的已命名字段 | 供应商众多、版式多样、文字与表格混合 |
处理规格表和多变体表格
数据表上的大多数提取错误都出在表格中,而其中大多数又发生在一张表格描述多个型号的时候。一张在读者看来一目了然的表格,往往隐藏着解析器或疲劳的人容易出错的结构:只出现在表头中的单位、跨型号合并的单元格、附在数字上的脚注标记,以及延续到下一页的表格。
在将任何值复制到记录之前,请按固定顺序逐一处理每张规格表:
- 识别方向:型号或变体是按列排列还是按行排列?记下数量,以便最后核对记录数。
- 阅读每一行表头,包括括号中的单位,并将单位带入该列或该行的每个单元格。
- 展开合并单元格:跨越多个型号列的值适用于其中每个型号,而不只是第一个。
- 重新拼合跨页拆分的表格,检查重复的表头没有被当作数据行读取,也没有在分页处丢失任何一行。
- 将脚注标记与数字分开——“1.1¹”表示 1.1 加脚注 1,而不是 1.11——并将脚注文字作为该值的条件保存。
- 区分空白、“—”、“n/a”和“optional”:空白表示未知,破折号通常表示不适用,两者都不应变成零。
- 查找表格之外的值,例如表格下方的“all models: 230 V”,并将其应用于它所涵盖的每个型号。
- 将表格拆分为每个型号或变体一条记录,然后确认记录数与第 1 步相符。
扫描版 PDF 与 OCR 质量
首先检查 PDF 是否有文本层:如果可以选中或搜索文本,则它是数字版;如果不能,则它是图像,需要先经过 OCR,任何表格工具才能读取。当供应商发来扫描件时,请索取数字版原件——这样可以消除一整类错误。如果必须自行扫描,文本的常见建议分辨率约为 300 dpi,而页面端正、对比度高与分辨率同样重要。
OCR 错误之所以危险,是因为它们会产生看似合理的输出。容易混淆的字符是可以预见的,因此检查方法也可以是可预见的:
| OCR 错误 | 示例 | 发现方法 |
|---|---|---|
| 字母与数字混淆(O/0、l/1、S/5、B/8) | “AX-1OO”而不是 AX-100 | 对型号进行格式校验;GTIN 校验位 |
| 小数分隔符丢失 | “1,5 l”被读成“15 l” | 按属性设置合理范围 |
| 脚注并入数字 | “1.1¹ kg”被读成“1.11 kg” | 与同系列型号比较;查找脚注文字 |
| 阅读顺序错误 | 两列被合并成一行 | 检查每个型号的值数量 |
| 单位符号识别错误 | “°C”被读成“oC”,“µm”被读成“um” | 按属性设置允许的单位列表 |
| 减号或破折号丢失 | “−20 °C”被读成“20 °C” | 检查范围的最小值 ≤ 最大值 |
示例演练:数据表如何变成结构化记录
下面以一份说明性的水壶数据表为例,说明上述步骤如何应用,该数据表在一张表格中涵盖两个型号。这是教学示例,不是真实产品,也不是实测的提取结果。每一行源内容都会被映射到一个字段、规范化并经过检查。
结果是两条变体记录,共享容量、功率和电压,各自带有颜色、重量和标识符——外加两个需要向供应商确认的未决问题。没有任何内容是凭假设填写的:第二个型号的 EAN 和原产国在供应商提供之前保持为空。如何在众多供应商而不是单份表格之间规范化数值和单位,详见产品属性指南。
| 原文内容 | 字段 | 提取的值 | 所做检查 |
|---|---|---|---|
| Model: AX-100 | AX-100B | model_number | AX-100; AX-100B | 两列,因此是两条变体记录 |
| Capacity 1,5 l(跨两个型号合并) | capacity | 每个型号 1.5 L | 小数逗号;合并单元格复制到两个型号 |
| Power 1850–2200 W | rated_power | 最小 1850 W,最大 2200 W | 保留为范围,而不是单个数字 |
| 220–240 V~ 50/60 Hz | rated_voltage;frequency | 220–240 V AC;50/60 Hz | 一行内容,两个字段 |
| Colour: brushed steel | black | color | brushed steel;black | 每个变体一个值 |
| Net weight (kg) 1.1¹ | 1.0¹ | net_weight | 1.1 kg;1.0 kg | 单位取自表头;保留脚注 ¹ 的“without base” |
| EAN 6291041500213 | — | gtin | 6291041500213;空 | 校验位有效;索取缺失的 EAN |
| (未注明) | country_of_origin | 空 | 向供应商索取;绝不推断 |
常见失败模式与验证工作流
无论采用哪种方法,导致大多数提取错误的都是同样的几类文档特征。了解它们,您就可以围绕真正的风险来设计审核,而不是对每个值都一视同仁地重读一遍。
- 确认文档:产品正确、版本为现行版本、页面齐全。
- 对照源文件,核对每个标识符(型号、带校验位的 GTIN)以及每个与安全相关的值——警告、电气额定值、危害信息。
- 对其余内容运行自动检查:单位齐全、值在合理范围内、必填字段已填写。
- 按供应商对其余字段抽样检查,发现错误时扩大抽样范围。
- 将尚未解决的缺口转化为向供应商提出的问题,而不是估算。
- 将源 PDF、审核人和审核日期与记录一并保存。
| 失败模式 | 出了什么问题 | 预防措施 |
|---|---|---|
| 单位仅在表头中 | 孤立的数字丢失了单位 | 将表头单位带入各值;拒绝无单位的测量值 |
| 脚注和测试条件 | “Typical”“at 25 °C”或“without base”被丢弃 | 将条件与值一并保存 |
| 合并单元格 | 值只被赋给第一个型号 | 拆分变体之前先展开合并单元格 |
| 多语言数据表 | 小数逗号被误读;同一个值因两种语言被重复抓取两次 | 按区域设置解析数字;建立表头同义词列表;去重 |
| 一份 PDF 中包含多个产品 | 值被关联到错误的产品 | 每个产品一条记录;核对每个型号 |
| 过时的版本 | 旧版数据表与现行版本相矛盾 | 记录文档日期或版本;以最新的为准 |
| 值仅出现在图纸或图像中 | 技术图纸上的尺寸被遗漏 | 检查图纸;标记缺失的尺寸 |
常见问题解答
- 可以从扫描版 PDF 中提取数据吗?
- 可以,但必须先用 OCR(光学字符识别)识别文字。只读取数字文本的表格工具无法从扫描页面中得到任何内容;支持 OCR 的工具和基于 AI 的工具可以读取,但对低质量扫描件需要更加谨慎。
- 如何从 PDF 数据表中提取产品属性?
- 先定义您需要的属性(例如材质、颜色、容量),然后从数据表的表格和文字中提取值,可以手动完成,也可以使用将表格单元格和句子映射到字段的 AI 工具。对于仅出现在营销文案中的属性要谨慎对待,并对照规格表确认技术参数的值。
- 提取后的产品数据应采用什么格式?
- 使用下游系统可导入的格式——电子表格和店铺导入工具通常用 CSV,API 和 PIM 系统通常用 JSON。每个产品变体对应一行或一个对象,并保持字段名称和单位一致。
- AI 提取的准确度足以不经审核直接发布吗?
- 不应未经审核就发布。AI 提取可以省去大部分打字工作,但在数据被使用之前,应由人对照源文档确认不确定的字段、标识码以及任何与安全相关的内容。
- 从 PDF 数据表中提取表格的最佳方式是什么?
- 对于整洁的数字表格,表格提取工具和 AI 提取工具都可以使用;扫描的表格需要先做 OCR。无论使用哪种工具,都要展开合并单元格、将表头单位带入每个值、将脚注标记与数字分开,并将多型号表格拆分为每个型号一条记录。
- AI 从 PDF 中提取产品数据的准确度如何?
- 这取决于文档质量、版式的复杂程度以及您对字段定义的清晰程度,因此没有适用于您的文档的统一准确率数字。请自行测量:提取一批供应商 PDF 样本,将每个字段与源文件比对,并分别统计错误值和缺失值。
- 我可以把 PDF 目录转换成适用于我店铺的 CSV 吗?
- 可以。将每个产品或变体提取为固定列集中的一条记录,规范化单位和值,然后重命名列以匹配您店铺的导入模板。目录中每个产品的详细程度通常不如单独的数据表,因此预期会有缺口需要从其他来源补充。
- 如何从其他语言的数据表中提取数据?
- 提取时保持值与原文一致,按文档的区域设置解析数字(小数逗号、千位分隔符),并通过同义词列表将外语表头映射到您的字段名称。描述性文字应单独翻译,并经过审核。