Skip to main content
指南·12 分钟阅读·

如何从PDF证书中提取材料规格

快速答案

Quick Answer

要从PDF证书中提取材料规格:对于一次性查询,使用PDF文本选择或复制粘贴。对于循环提取大量数据,使用一个将化学成分、机械性能、铁水号和标准参考映射到结构化模式的人工智能提取工具。原生PDF比扫描PDF的准确性更高。

PDF铁水测试证书包含材料批次的完整材料规格证明:化学成分、机械测试结果、测试所依据的标准和等级,以及认证铁厂的声明。将这些值从PDF中取出并输入到可用的系统中——不进行手动重新输入——是本指南要解决的实际问题。


了解材料规格PDF中的内容

在提取之前,了解您要查找的内容。典型的MTC包含:

标题/身份字段

  • 铁水号(有时称为铸造号、熔化号或批次号)
  • 证书号和日期
  • 订单/采购单参考
  • 认证铁厂的名称和地址
  • 签署人和职位

材料规格字段

  • 适用标准(例如ASTM A106、EN 10210-1、API 5L)
  • 等级(例如B级、S355J2H、X52)
  • 产品形式(无缝管、热轧板、棒材)
  • 名义尺寸(外径、壁厚、长度)
  • 热处理状况(正火、淬火回火、轧制状态)

化学成分表

  • 碳(C)、锰(Mn)、硅(Si)、磷(P)、硫(S)至少需要
  • 根据等级的其他元素:铬、钼、镍、钒、铌、硼、氮等
  • 数值通常以重量百分比报告,精确到2-4位小数

机械测试结果

  • 抗拉强度(UTS)、屈服强度(YS/Rp0.2)、伸长率(%)
  • 对于冲击测试等级:在指定温度下的夏比吸收能(焦耳)
  • 硬度(HB、HV、HRC)(如适用)

补充数据(如适用)

  • 无损检测结果
  • 焊接用焊丝/填充金属数据(用于焊接产品)
  • 焊后热处理记录
  • 静压测试结果

方法1:手动复制粘贴(单个文档)

对于偶发性、低容量的查询:

  1. 在任何PDF阅读器中打开PDF
  2. 对于原生PDF(机器生成):使用文本选择工具来突出显示并直接复制值。注意:表格可能不会干净地复制——根据PDF的生成方式,值可能以错误的顺序到达。
  3. 对于扫描PDF:文本层是图像,而不是可选择的文本。您必须在视觉上阅读值并输入它们。

局限性:缓慢,对于化学表容易出错,没有结构化输出,没有审计线索。


方法2:使用Python进行PDF文本提取(编程式,原生PDF)

对于需要以编程方式处理一批原生PDF的开发人员:

import pdfplumber

with pdfplumber.open("milling_cert.pdf") as pdf:
    for page in pdf.pages:
        # Extract all text
        text = page.extract_text()
        
        # Extract tables as lists
        tables = page.extract_tables()
        for table in tables:
            for row in table:
                print(row)

这给了您什么:来自原生PDF的原始文本和表格数组。您仍然需要后处理逻辑来识别哪个表是化学表、哪一行是标题以及如何将值与元素标签相关联。

局限性

  • 仅适用于原生PDF(不是扫描的)
  • 对于复杂布局(合并单元格、多行标题)会丢失表格结构
  • 没有字段识别——您必须编写规则来找到每个值
  • 不处理不同铁厂之间的布局变化

此方法适用于单一供应商、高容量的情况,且PDF格式稳定。它不是通用证书解析器。


方法3:基于人工智能的提取(通用)

用于跨多个供应商和文档类型的生产使用:

人工智能提取工具接收PDF、分类文档类型、识别适用的提取模式、提取具有每字段置信度分数的值,并返回结构化JSON记录。原生PDF和扫描文档的流程相同,尽管原生PDF的准确性更高。

输出的样子(简化):

{
  "heat_number": "A87234",
  "applicable_standard": "ASTM A106",
  "grade": "Grade B",
  "chemical_composition": {
    "carbon": { "value": 0.18, "unit": "wt%", "confidence": 0.97 },
    "manganese": { "value": 1.06, "unit": "wt%", "confidence": 0.96 },
    "phosphorus": { "value": 0.012, "unit": "wt%", "confidence": 0.94 },
    "sulfur": { "value": 0.008, "unit": "wt%", "confidence": 0.95 }
  },
  "mechanical_properties": {
    "tensile_strength": { "value": 415, "unit": "MPa", "confidence": 0.98 },
    "yield_strength": { "value": 240, "unit": "MPa", "confidence": 0.97 },
    "elongation": { "value": 28.5, "unit": "%", "confidence": 0.95 }
  }
}

每个字段都有其值、单位和置信度分数。低置信度字段被路由到人工审查。


按字段类型划分的常见提取挑战

铁水号:格式差异很大——一些铁厂使用纯数字代码,其他使用带连字符的字母数字组合,还有一些包括批次或试验片参考。提取器必须处理格式变异性,不能截断或转置字符。

单位:机械性能可能以MPa、N/mm²、ksi或tf/in²报告,具体取决于铁厂所在国家和适用的标准。需要单位检测和规范化以进行跨证书比较。"60 ksi"和"414 MPa"的抗拉强度是等效的,但在没有单位感知规范化的情况下看起来会有所不同。

接近检测限的化学值:一些铁厂将元素报告为"<0.005"(低于检测限),而不是具体值。提取器必须将其视为有界值,而不是文本字符串或null。

双重认证:涵盖两个同时进行的标准的证书(例如ASTM A106 Gr.B / ASME SA-106 Gr.B)必须记录两个参考。单一标准提取器会悄悄地删除第二个参考。

产品尺寸表:对于管道证书,通常会有一个尺寸表,按项目号列出外径、壁厚和长度。此表必须与化学和机械数据分开分析,并按项目号链接。


提取后:根据规格进行验证

提取的值仅在您知道它们是否符合时才有用。验证需要将每个提取的值与适用标准的限制进行比较:

字段提取值标准限制结果
0.18 wt%≤ 0.30 wt%通过
抗拉强度415 MPa≥ 415 MPa通过(在最小值)
屈服强度240 MPa≥ 240 MPa通过(在最小值)
伸长率28.5%≥ 30%失败

没有存储的、版本化的标准数据库,此验证需要审查员手动查找限制——抵消了自动化的大部分好处。像TestCert这样的平台在提取时将提取的值与标准验证引擎集成在一起,因此每个提取字段都会自动确定通过/失败。


常见问题

为什么从证书PDF复制文本会产生杂乱的结果?

两个常见原因:(1) PDF使用带有非标准字符编码的嵌入字体,导致复制粘贴替换为不正确的Unicode字符。(2) 化学表是作为图像而不是可选择的文本创建的。在情况1中,正确处理编码的PDF库将产生比简单复制粘贴更好的结果。在情况2中,需要OCR或人工智能提取。

我如何判断PDF是否有文本层或完全是扫描图像?

尝试在页面上选择文本。如果您可以突出显示单个单词,PDF有文本层。如果选择突出显示整个页面或没有选中任何内容,则它是仅图像PDF。在Python中,pdfplumberPyMuPDF将为仅图像页面返回空或非常短的文本字符串,您可以将其用作编程检测启发式。

我可以从嵌入在更大文档包中的证书中提取材料规格吗?

是的,但需要先进行文档分割步骤。项目文档包通常将MTC、检查报告和包装清单捆绑到单个PDF中。提取器必须在对每个部分应用适当的提取模式之前,识别哪些页面属于哪种文档类型。

从具有非标准表格布局的证书中提取化学成分的最佳方法是什么?

对于不寻常的布局——页面上拆分的两个表、旋转的表或非标准标题的表——视觉语言模型的性能优于基于OCR的方法,因为它在视觉上解释布局而不是依赖文本结构。如果您使用基于规则的或基于OCR的工具,您需要为该铁厂的布局添加自定义模板。

我如何处理机械结果以不同于数据库预期的单位报告的证书?

在提取层实现单位规范化,而不是数据库层。存储规范单位(强度为MPa,伸长率为%),并在提取时使用从证书中检测到的单位进行转换。在审计线索中记录原始值和单位以及规范化值,以便转换可追溯。

Ready to automate your certificate workflow?

Try TestCert free

相关指南