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

Python实现PDF长文本提取并生成规范JSON文件的问题

解决PyPDF2提取PDF文本生成规范JSON的问题

核心问题拆解

你当前面临两个核心问题:

  • 输出的JSON未形成预期的数组结构
  • 长文本中的特殊字符(标点、换行等)破坏JSON格式,但需完整保留用于后续Neo4j处理

完整解决方案代码

1. 稳定提取PDF文本

用PyPDF2遍历页面提取文本,保留原始特殊字符,仅清理无效空行:

from PyPDF2 import PdfReader
import json

def extract_pdf_text(pdf_path):
    reader = PdfReader(pdf_path)
    full_text = ""
    for page in reader.pages:
        page_content = page.extract_text()
        if page_content:
            full_text += page_content + "\n"
    # 清理连续空行,不删除有效换行和特殊字符
    full_text = "\n".join([line for line in full_text.splitlines() if line.strip() or line == "\n"])
    return full_text

2. 生成规范数组结构JSON

依赖Python内置json模块自动处理特殊字符转义,确保格式合法:

def build_valid_json(output_path, text, target_key="extracted_content"):
    # 构建数组结构的JSON数据,直接将字典包裹在列表中
    json_payload = [
        {
            target_key: text
        }
    ]
    # 用utf-8编码+关闭ASCII转义,保留所有字符原始形态
    with open(output_path, "w", encoding="utf-8") as f:
        json.dump(json_payload, f, ensure_ascii=False, indent=2)

# 调用示例
if __name__ == "__main__":
    pdf_content = extract_pdf_text("user_upload.pdf")
    build_valid_json("result.json", pdf_content)

关键细节说明

  • 特殊字符兼容:json.dump()会自动转义双引号、反斜杠、换行符等可能破坏JSON格式的字符,这些转义在Neo4j读取时会自动解析还原,完全不影响后续处理。
  • 数组结构保障:直接将单个文本字典包裹在列表中,若需批量处理多个PDF,只需向列表追加更多字典即可。
  • 编码问题规避:指定encoding="utf-8"和ensure_ascii=False,避免中文、特殊符号被转义为Unicode编码。

常见问题排查

  • 若提取文本出现乱码,尝试更新PyPDF2到最新版本,或替换为pdfplumber(文本提取精度更高,兼容上述JSON生成逻辑)。
  • 若JSON结构仍不符合预期,检查json_payload是否正确用列表包裹,避免直接输出单个字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:18:13