大语言模型-PDF文档解析

PDF解析能够提升大语言模型系统的信息处理能力和应用范围,为用户提供更加便捷、高效、个性化的服务体验。本文介绍三种常用的pdf解析方式:Open Parse、pdfplumber、PyMuPD。

一、Open Parse

Open Parse是一个能够直观地识别文档布局并有效地对其进行分块的灵活、易于使用的库。

处理流程

将解析出来的相关元素组合在一起,形成一个连贯的结构,输出表示文档不同部分的节点。如下图所示。

默认处理流程

python 复制代码
from openparse import DocumentParser

parser = DocumentParser()

语义辅助的处理流程

将每个节点的文本向量化,然后根据它们的相似性将它们聚类在一起。

目前只支持OpenAI API生成嵌入,但计划很快添加更多选项。

python 复制代码
from openparse import processing, DocumentParser

semantic_pipeline = processing.SemanticIngestionPipeline(
    openai_api_key=OPEN_AI_KEY,
    model="text-embedding-3-large",
    min_tokens=64,
    max_tokens=1024,
)
parser = DocumentParser(
    processing_pipeline=semantic_pipeline,
)
parsed_content = parser.parse(basic_doc_path)

表格处理流程

目前,我们提供三种从PDF中提取表格的选项:unitable , pymupdf 和 table-transformer

用法如下:

python 复制代码
parser = openparse.DocumentParser(
    table_args={...}
)

# ingesting the document
parsed_10k = parser.parse(meta10k_path)
1) Unitable

缺点:计算量大,检测表格位置时会遗漏或错误裁剪。

Name Type Description Default
parsing_algorithm Literal"unitable" 将使用的解析方式,当前unitable None
min_table_confidence float 要提取的表的最小置信度得分。 0.75
table_output_format Literal"html" 提取的表格的格式。目前只支持html。 None
python 复制代码
parser = openparse.DocumentParser(
    table_args={
        "parsing_algorithm": "unitable",
        "min_table_confidence": 0.8,
    }
)
parsed_doc = parser.parse(doc_with_tables_path)
2) Pymupdf

在结构相对简单的密集表上运行良好、也很快。

Name Type Description Default
parsing_algorithm Literal'pymupdf' 将使用的解析方式,当前pymupdf None
min_table_confidence float 要提取的表的最小置信度得分。 0.75
table_output_format Literal'html|markdown' 提取的表格的格式。目前只支持html和markdown。 None
python 复制代码
# defining the parser (table_args is a dict)
parser = openparse.DocumentParser(
    table_args={
        "parsing_algorithm": "pymupdf",
        "table_output_format": "markdown"
    }
)

# ingesting the document
parsed_10k = parser.parse(meta10k_path)
3) Table Transformer

在具有更复杂结构和大量空白的表上运行良好。

Name Type Description Default
parsing_algorithm Literal"table-transformers" 将使用的解析方式,当前table-transformers None
min_table_confidence float 要提取的表的最小置信度得分。 None
min_cell_confidence float 要提取的单元格的最小置信度分数。 None
table_output_format Literal"markdown", "html" 提取的表格的格式。同时支持markdown和html。 None
python 复制代码
parser = openparse.DocumentParser(
    table_args={
        "parsing_algorithm": "table-transformers",
        "min_table_confidence": 0.8,
    }
)
parsed_doc2 = parser.parse(doc_with_tables_path)

Visualization

Node类内置了对在jupyter笔记本中将其文本内容呈现为markdown的支持。

python 复制代码
import openparse

basic_doc_path = "./sample-docs/mobile-home-manual.pdf"
parser = openparse.DocumentParser()
parsed_basic_doc = parser.parse(basic_doc_path)

for node in parsed_basic_doc.nodes:
    display(node)

还可以将结果直接叠加在原始pdf上显示

python 复制代码
pdf = openparse.Pdf(basic_doc_path)
pdf.display_with_bboxes(
    parsed_basic_doc.nodes,
)

还可以将原始pdf上标记结果并导出到单独的pdf文件中

python 复制代码
pdf = openparse.Pdf(basic_doc_path)
pdf.export_with_bboxes(
    parsed_basic_doc.nodes,
    output_pdf="./sample-docs/mobile-home-manual-marked-up.pdf"
)

突出特点

🔍 视觉驱动:Open-Parse通过视觉分析提升给LLM的输入质量,超越简单的文本分割。

✍️ Markdown支持:支持基础Markdown解析,包括标题、粗体和斜体。

📊 高精度表格支持:以准确度超越传统工具的方式,将表格提取到干净的Markdown格式。

🛠️ 可扩展性:轻松实现自定义后处理步骤。

💡 直观易用:优秀的编辑器支持,处处自动补全,减少调试时间。

🎯 易于使用:设计上易于上手和学习,减少查阅文档的时间。

二、pdfplumber

三、PyMuPD

Reference

Open Parse Document

相关推荐
AI码农小姐姐18 分钟前
一站式 AI 漫剧生产方案:知漫剧,降低多模态内容创作门槛
人工智能
鲲穹AI种草36 分钟前
小红书 AI 创作工具怎么选?鲲穹 RedNote 功能实测与横向对比
大数据·人工智能
这张生成的图像能检测吗42 分钟前
(论文速读)LogSAD:无需训练的结构异常与逻辑异常统一检测
人工智能·机器学习·计算机视觉·大模型·多模态·异常检测
Ai-_Man1 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
Eric.461 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
搭贝1 小时前
上厕所的时间搭好一套系统:AI自动生成实测
开发语言·人工智能·低代码·ai·php·搭贝
明月_清风2 小时前
SaaS 的三层挣钱逻辑,正在被 AI 从第一层击穿
人工智能·后端
福兮说2 小时前
秋招复习操作系统并发,我让 AI 生成了一张知识图谱,15 条关系里改了 5 条
人工智能·操作系统·知识图谱·秋招
老A的AI实验室2 小时前
Cyber Weekly #84
人工智能·ai·llm·agi·genai
lie..2 小时前
30天从零开始学AI应用开发(Day 18):文档切分与检索优化:RAG 效果好坏的分水岭
人工智能·ai·大模型