gptpdf:使用大模型(如 GPT-4o)将 PDF 解析为 markdown。

今天给大家分享一个开源的项目, 使用视觉大语言模型(如 GPT-4o)将 PDF 解析为 markdown。

方法非常简单(只有293行代码),但几乎可以完美地解析排版、数学公式、表格、图片、图表等。

使用 GeneralAgent lib 与 OpenAI API 交互。 每页平均价格:0.013 美元

pdfgpt-ui 是一个基于 gptpdf 的可视化工具。

处理流程

  1. 使用 PyMuPDF 库,对 PDF 进行解析出所有非文本区域,并做好标记,比如:
  1. 使用视觉大模型(如 GPT-4o)进行解析,得到 markdown 文件。

样例

有关 PDF,请参阅 <examples/attention_is_all_you_need/output.md>

安装

pip install gptpdf

使用

from gptpdf import parse_pdf

api_key = 'Your OpenAI API Key'
content, image_paths = parse_pdf(pdf_path, api_key=api_key)
print(content)

更多内容请见 <test/test.py>

API

def parse_pdf(
        pdf_path: str,
        output_dir: str = './',
        prompt: Optional[Dict] = None,
        api_key: Optional[str] = None,
        base_url: Optional[str] = None,
        model: str = 'gpt-4o',
        verbose: bool = False,
        gpt_worker: int = 1
) -> Tuple[str, List[str]]:

将 PDF 文件解析为 Markdown 文件,并返回 Markdown 内容和所有图片路径列表。

参数

  • pdf_pathstr

    PDF 文件路径

  • output_dirstr ,默认值:'./'

    输出目录,存储所有图片和 Markdown 文件

  • api_key :*Optional[str]*,可选

    OpenAI API 密钥。如果未提供,则使用 OPENAI_API_KEY 环境变量。

  • base_url :*Optional[str]*,可选

    OpenAI 基本 URL。如果未提供,则使用 OPENAI_BASE_URL 环境变量。可以通过修改该环境变量调用 OpenAI API 类接口的其他大模型服务,例如GLM-4V

  • modelstr,默认值:'gpt-4o'。OpenAI API 格式的多模态大模型。如果需要使用其他模型,例如

    • qwen-vl-max

    • GLM-4V

    • Yi-Vision

    • Azure OpenAI,通过将 base_url 指定为 https://xxxx.openai.azure.com/ 来使用 Azure OpenAI,api_key 是 Azure API 密钥,模型类似于 azure_xxxx,其中 xxxx 是部署的模型名称(已测试)。

  • verbosebool,默认值:False,详细模式,开启后会在命令行显示大模型解析的内容。

  • gpt_workerint ,默认值:1

    GPT 解析工作线程数。如果您的机器性能较好,可以适当调高,以提高解析速度。

  • prompt : dict, 可选,如果您使用的模型与本仓库默认的提示词不匹配,无法发挥出最佳效果,我们支持自定义加入提示词。 仓库中,提示词分为三个部分,分别是:

    • prompt:主要用于指导模型如何处理和转换图片中的文本内容。

    • rect_prompt:用于处理图片中标注了特定区域(例如表格或图片)的情况。

    • role_prompt:定义了模型的角色,确保模型理解它在执行PDF文档解析任务。 您可以用字典的形式传入自定义的提示词,实现对任意提示词的替换,这是一个例子:

      prompt = {
      "prompt": "自定义提示词语",
      "rect_prompt": "自定义提示词",
      "role_prompt": "自定义提示词"
      }

      content, image_paths = parse_pdf(
      pdf_path=pdf_path,
      output_dir='./output',
      model="gpt-4o",
      prompt="",
      verbose=False,
      )

    您不需要替换所有的提示词,如果您没有传入自定义提示词,仓库会自动使用默认的提示词。默认提示词使用的是中文,如果您的PDF文档是英文的,或者您的模型不支持中文,建议您自定义提示词。

版本

  • 0.0.9~0.0.10: 优化 PDF 解析流程,解析效果更好

  • 0.0.2 - 0.0.8: 添加 gpt_worker 参数;添加 GLM-4V、Azure OpenAI 支持;修复一些 bug

  • 0.0.1: 第一个版本

相关推荐
石小石Orz1 分钟前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
2301_811274316 分钟前
大数据基于Spring Boot的化妆品推荐系统的设计与实现
大数据·spring boot·后端
湫ccc7 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤10 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭13 分钟前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~13 分钟前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang16 分钟前
python如何使用spark操作hive
hive·python·spark
q0_0p17 分钟前
牛客小白月赛105 (Python题解) A~E
python·牛客
极客代码20 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
zhangfeng113320 分钟前
pytorch 的交叉熵函数,多分类,二分类
人工智能·pytorch·分类