# Document-Intelligence-with-LLM **Repository Path**: shiwan66/document-intelligence-with-llm ## Basic Information - **Project Name**: Document-Intelligence-with-LLM - **Description**: 是一个使用 LangChain 和大语言模型(如 Google Gemini 和 OpenAI 的 GPT 模型)将 PDF 文档转换为 Markdown 格式的工具。 使用大语言模型将提取的文本转换为 Markdown 格式。 支持多种大语言模型提供商(如 Google 和 OpenAI)。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-24 - **Last Updated**: 2024-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用 LangChain 和大语言模型的 PDF 转 Markdown 转换器 本项目提供了一个 Python 脚本,可以使用大语言模型(如 Google Gemini 或 OpenAI 的 GPT 模型)将 PDF 文档转换为 Markdown 格式。它利用 [LangChain](https://www.langchain.com/) 框架进行高效的文本处理和模型交互。 ## 功能特点 * **PDF 文本提取:** 使用 `pdfminer.six` 逐页从 PDF 文件中提取文本。 * **智能分块:** 使用 `RecursiveCharacterTextSplitter` 将提取的文本分割成较小的块,以确保大语言模型能够最佳处理。 * **大语言模型驱动的转换:** 使用 Google Gemini(例如 `gemini-1.5-flash`)或 OpenAI GPT(例如 `gpt-4o-mini`)生成 Markdown,充分利用其自然语言理解和生成能力。 * **可自定义的 Markdown 格式:** 使用提示模板引导大语言模型生成包含以下内容的 Markdown: * 适当的标题(#、##等) * 项目符号或编号列表 * 粗体/斜体强调 * 代码块 * 表格 * **灵活的大语言模型提供商:** 通过设置 `llm_provider` 变量和相应的 API 密钥环境变量,可以选择 Google 或 OpenAI 模型。 * **环境变量配置:** 使用环境变量(`GOOGLE_API_KEY` 或 `OPENAI_API_KEY`)进行安全的 API 密钥管理。 ## 系统要求 * Python 3.7+ * `langchain-core` * `langchain-google-genai` * `langchain-openai` * `pdfminer.six` ## 安装 1. **克隆仓库:** ```bash git clone cd ``` 2. **安装所需的包:** ```bash pip install -r requirements.txt ``` ## 使用方法 1. **设置环境变量:** * **对于 Google Gemini:** ```bash export GOOGLE_API_KEY="你的_google_api_key" ``` * **对于 OpenAI GPT:** ```bash export OPENAI_API_KEY="你的_openai_api_key" ``` 2. **放置 PDF 文件:** 将要转换的 PDF 放在脚本同一目录下,命名为 `test.pdf`,或在 `main` 函数中更改 `pdf_path` 变量。 3. **运行脚本:** ```bash python pdf_to_markdown.py ``` 4. **输出:** 转换后的 Markdown 将按页打印到控制台,并保存到名为 `output.md` 的文件中。 ## 配置 * **大语言模型提供商:** 在 `main` 函数中更改 `llm_provider` 变量为 `"google"` 或 `"openai"` 以切换大语言模型。 * **模型:** 可以在 `ChatGoogleGenerativeAI` 或 `ChatOpenAI` 实例化时指定模型(例如 `"gemini-1.5-flash"`、`"gpt-4o-mini"`)。 * **温度:** 在创建大语言模型实例时调整 `temperature` 参数(例如 Google 为 `0.5`,OpenAI 为 `0.7`)以控制输出的创造性(较低的值更确定,较高的值更具创造性)。 * **分块大小和重叠:** 可以修改脚本开头的 `CHUNK_SIZE` 和 `CHUNK_OVERLAP` 常量,以调整文本分割以供大语言模型处理的方式。 * **Markdown 提示:** 自定义 `MARKDOWN_PROMPT_TEMPLATE` 字符串,以微调给予大语言模型的 Markdown 生成指令。 ## 示例提示(MARKDOWN_PROMPT_TEMPLATE)