You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PDF图像挖掘中结构化文本转Python字典的简洁实现方案咨询

简洁实现PDF挖掘文本的结构化字段提取

可以通过正则模式映射+批量匹配的方式替代零散的re.sub操作,代码更简洁易维护,同时自动处理字段缺失的情况:

核心思路

  • 把需要提取的字段和对应的正则模式统一存入字典,方便管理和修改
  • 初始化结果字典,所有字段默认设为NULL
  • 对文本做一次全局预处理,消除多余换行和空格
  • 遍历字段模式,批量匹配并更新结果字典

代码实现

import re

def extract_structured_data(raw_text):
    # 定义字段与对应的正则匹配模式,兼容换行、空格等格式问题
    field_patterns = {
        "Name": r"Name\s*:\s*(.*?)(?=\s*[A-Za-z']+:|$)",
        "Father/Husband Name": r"(Father's Name|Husband's Name)\s*:\s*(.*?)(?=\s*[A-Za-z']+:|$)",
        "House Number": r"House Number\s*:\s*(.*?)(?=\s*[A-Za-z']+:|$)",
        "Age": r"Age\s*:\s*(.*?)(?=\s*[A-Za-z']+:|$)",
        "Gender": r"Gender\s*:\s*(.*?)(?=\s*[A-Za-z']+:|$)"
    }
    
    # 初始化结果,所有字段默认设为NULL
    result = {field: "NULL" for field in field_patterns.keys()}
    
    # 全局预处理:合并多余的换行、空格,统一文本格式
    cleaned_text = re.sub(r'\s+', ' ', raw_text).strip()
    
    # 批量匹配每个字段
    for field, pattern in field_patterns.items():
        match = re.search(pattern, cleaned_text, re.DOTALL)
        if match:
            # 针对Father/Husband Name字段,取第二个分组的值
            value = match.group(2).strip() if field == "Father/Husband Name" else match.group(1).strip()
            # 若匹配到空值,仍设为NULL
            result[field] = value if value else "NULL"
    
    return result

使用示例

假设从PDF提取的原始文本如下:

Name : Alice Smith
Husband's Name : Bob Smith
House Number : 78
Age : 
Gender : Female

调用函数并输出结果:

sample_raw_text = """Name : Alice Smith
Husband's Name : Bob Smith
House Number : 78
Age : 
Gender : Female"""

extracted_data = extract_structured_data(sample_raw_text)
print(extracted_data)

输出结果:

{
    'Name': 'Alice Smith',
    'Father/Husband Name': 'Bob Smith',
    'House Number': '78',
    'Age': 'NULL',
    'Gender': 'Female'
}

优势说明

  • 字段规则集中管理,新增或修改字段只需调整field_patterns字典,无需改动核心逻辑
  • 全局预处理替代多次零散的re.sub,减少重复操作
  • 自动处理字段缺失、值为空的情况,统一返回NULL

内容的提问来源于stack exchange,提问作者yawwml

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:15:33