快速答案
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:手动复制粘贴(单个文档)
对于偶发性、低容量的查询:
- 在任何PDF阅读器中打开PDF
- 对于原生PDF(机器生成):使用文本选择工具来突出显示并直接复制值。注意:表格可能不会干净地复制——根据PDF的生成方式,值可能以错误的顺序到达。
- 对于扫描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中,pdfplumber或PyMuPDF将为仅图像页面返回空或非常短的文本字符串,您可以将其用作编程检测启发式。
我可以从嵌入在更大文档包中的证书中提取材料规格吗?
是的,但需要先进行文档分割步骤。项目文档包通常将MTC、检查报告和包装清单捆绑到单个PDF中。提取器必须在对每个部分应用适当的提取模式之前,识别哪些页面属于哪种文档类型。
从具有非标准表格布局的证书中提取化学成分的最佳方法是什么?
对于不寻常的布局——页面上拆分的两个表、旋转的表或非标准标题的表——视觉语言模型的性能优于基于OCR的方法,因为它在视觉上解释布局而不是依赖文本结构。如果您使用基于规则的或基于OCR的工具,您需要为该铁厂的布局添加自定义模板。
我如何处理机械结果以不同于数据库预期的单位报告的证书?
在提取层实现单位规范化,而不是数据库层。存储规范单位(强度为MPa,伸长率为%),并在提取时使用从证书中检测到的单位进行转换。在审计线索中记录原始值和单位以及规范化值,以便转换可追溯。
Ready to automate your certificate workflow?
Try TestCert free