LLMDocParser
一个用于解析PDF并使用LLM分析其内容的软件包。
这个软件包是基于gptpdf概念的改进版本。
方法
gptpdf使用PyMuPDF解析PDF,识别文本和非文本区域。然后根据特定规则合并或过滤文本区域,并将最终结果输入到多模态模型中进行解析。这种方法特别有效。
基于这个概念,我做了一些小改进。
主要流程
使用布局分析模型解析PDF的每一页,识别每个区域的类型,包括文本、标题、图形、图形说明、表格、表格说明、页眉、页脚、参考文献和公式。同时获取每个区域的坐标。
布局分析结果示例:
[{'header': ((101, 66, 436, 102), 0)},
{'header': ((1038, 81, 1088, 95), 1)},
{'title': ((106, 215, 947, 284), 2)},
{'text': ((101, 319, 835, 390), 3)},
{'text': ((100, 565, 579, 933), 4)},
{'text': ((100, 967, 573, 1025), 5)},
{'text': ((121, 1055, 276, 1091), 6)},
{'reference': ((101, 1124, 562, 1429), 7)},
{'text': ((610, 565, 1089, 930), 8)},
{'text': ((613, 976, 1006, 1045), 9)},
{'title': ((612, 1114, 726, 1129), 10)},
{'text': ((611, 1165, 1089, 1431), 11)},
{'title': ((1011, 1471, 1084, 1492), 12)}]
这个结果包括每个区域的类型、坐标和阅读顺序。通过使用这个结果,可以设置更精确的规则来解析PDF。
最后,将相应区域的图像输入到多模态模型中,比如GPT-4或Qwen-VL,直接获取对RAG解决方案友好的文本块。
img_path | type | page_no | filename | content | filepath |
---|---|---|---|---|---|
{absolute_path}/page_1_title.png | 标题 | 1 | attention is all you need | [文本块1] | {file_absolute_path} |
{absolute_path}/page_1_text.png | 正文 | 1 | attention is all you need | [文本块2] | {file_absolute_path} |
{absolute_path}/page_2_figure.png | 图表 | 2 | attention is all you need | [文本块3] | {file_absolute_path} |
{absolute_path}/page_2_figure_caption.png | 图表说明 | 2 | attention is all you need | [文本块4] | {file_absolute_path} |
{absolute_path}/page_3_table.png | 表格 | 3 | attention is all you need | [文本块5] | {file_absolute_path} |
{absolute_path}/page_3_table_caption.png | 表格说明 | 3 | attention is all you need | [文本块6] | {file_absolute_path} |
{absolute_path}/page_1_header.png | 页眉 | 1 | attention is all you need | [文本块7] | {file_absolute_path} |
{absolute_path}/page_2_footer.png | 页脚 | 2 | attention is all you need | [文本块8] | {file_absolute_path} |
{absolute_path}/page_3_reference.png | 参考文献 | 3 | attention is all you need | [文本块9] | {file_absolute_path} |
{absolute_path}/page_1_equation.png | 公式 | 1 | attention is all you need | [文本块10] | {file_absolute_path} |
更多详情请参见llm_parser.py的main函数。
安装
pip install llmdocparser
从源代码安装
要从源代码安装此项目,请按照以下步骤操作:
-
克隆仓库:
首先,将仓库克隆到您的本地机器。打开终端并运行以下命令:
git clone https://github.com/lazyFrogLOL/llmdocparser.git cd llmdocparser
-
安装依赖:
本项目使用Poetry进行依赖管理。确保您已安装Poetry。如果没有,可以按照Poetry安装指南中的说明进行安装。
安装Poetry后,在项目根目录下运行以下命令来安装依赖:
poetry install
这将读取
pyproject.toml
文件并安装项目所需的所有依赖。
使用方法
from llmdocparser.llm_parser import get_image_content
content, cost = get_image_content(
llm_type="azure",
pdf_path="path/to/your/pdf",
output_dir="path/to/output/directory",
max_concurrency=5,
azure_deployment="azure-gpt-4o",
azure_endpoint="your_azure_endpoint",
api_key="your_api_key",
api_version="your_api_version"
)
print(content)
print(cost)
参数
-
llm_type: str
选项为azure、openai、dashscope。
-
pdf_path: str
PDF文件的路径。
-
output_dir: str
存储所有解析图像的输出目录。
-
max_concurrency:整数
GPT解析工作线程的数量。批量调用详情:批量支持
如果使用Azure,需要传递azure_deployment和azure_endpoint参数;否则,只需提供API密钥。
-
base_url:字符串
OpenAI兼容服务器URL。详情:OpenAI兼容服务器
成本
使用"Attention Is All You Need"论文进行分析,选择的模型是GPT-4o,成本如下:
总Token数:44063
提示Token数:33812
完成Token数:10251
总成本(美元):$0.322825
每页平均成本:$0.0215