# langchain-pdf-ocr-analyzer **Repository Path**: teeoo/langchain-pdf-ocr-analyzer ## Basic Information - **Project Name**: langchain-pdf-ocr-analyzer - **Description**: 这是一款强大的PDF文档处理工具,专为中文PDF识别和英文翻译设计。支持批量处理PDF文件,将识别内容转为Markdown格式输出。技术特点包括:FastAPI异步处理、Tesseract高精度OCR、DeepSeek专业翻译API、LangChain文档智能解析和WebSocket实时进度推送。采用模块化设计,支持跨平台部署,提供完整RESTful API,易于集成到现有系统中。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-20 - **Last Updated**: 2025-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PDF OCR文档处理系统 基于 Vue.js、FastAPI 和 LangChain 的 PDF OCR 文档处理系统,支持文件上传、OCR 识别、智能文本处理等功能。 ## 功能特点 - **文件处理** - 支持 PDF 和 ZIP 文件上传 - 自动 OCR 识别(支持中英文) - 实时处理进度显示 - **智能文本处理** - 文本翻译(支持中、英、日、德、法等语言) - 智能总结(自动分块处理长文本) - 信息提取(结构化呈现关键信息) - 智能问答(自动生成问答对) - Markdown 格式输出 - **技术特点** - 基于 LangChain 的文本处理链 - 智能文本分块和合并 - 自定义 Chat Model 支持 - 结构化的提示词模板 - 完整的错误处理和日志记录 ## 技术栈 - **前端** - Vue.js 3.x - Element Plus - Axios - **后端** - FastAPI - LangChain - Tesseract OCR - PDF2Image ## 安装部署 1. **环境要求** - Python 3.8+ - Node.js 14+ - Tesseract OCR 2. **安装依赖** ```bash # 后端依赖 pip install -r requirements.txt # 前端依赖 cd frontend npm install ``` 3. **配置环境变量** 创建 `.env` 文件: ```plaintext # API 配置 API_HOST=0.0.0.0 API_PORT=3003 # 文件上传配置 MAX_UPLOAD_SIZE=104857600 # 100MB ALLOWED_EXTENSIONS=.pdf,.zip # OCR 配置 TESSERACT_CMD=/usr/local/bin/tesseract ``` 4. **启动服务** ```bash # 启动后端 ./start.sh # 启动前端(开发模式) cd frontend npm run dev ``` ## 使用流程 1. **文件上传** - 支持单个 PDF 或包含多个 PDF 的 ZIP 文件 - 自动解压和验证文件格式 - 显示上传进度 2. **OCR 处理** - 自动将 PDF 转换为图片 - 使用 Tesseract 进行文字识别 - 支持中英文混合识别 3. **文本处理** - 选择处理类型:翻译/总结/信息提取/问答 - 设置目标语言(翻译时) - 设置总结长度(总结时) 4. **结果获取** - 实时显示处理进度 - 自动生成 Markdown 格式结果 - 支持结果下载 ## API 接口 ### 1. 文件上传接口 ``` POST /api/upload Content-Type: multipart/form-data 参数: - file: 文件(PDF或ZIP) 响应: { "message": "上传成功", "files": ["filename.pdf"], "temp_dir": "临时目录路径" } ``` ### 2. OCR处理接口 ``` POST /api/ocr/{filename} 请求参数: - filename: 文件名 - temp_dir: 临时目录路径 响应: { "status": "success", "message": "OCR处理成功", "text": "识别的文本内容", "image_paths": ["图片路径列表"] } ``` ### 3. 文本处理接口 ``` POST /api/process/{filename} 请求参数: { "temp_dir": "临时目录路径", "prompt_type": "处理类型", // translate, summarize, extract_info, qa "target_language": "目标语言", // zh, en, ja, de, fr "summary_length": 500 // 总结长度(可选) } 响应: { "status": "success", "message": "处理成功", "result": "处理结果", "output_file": "输出文件名" } ``` ### 4. 文件下载接口 ``` GET /api/download/{filename} 请求参数: - filename: 文件名 - temp_dir: 临时目录路径 - type: 文件类型(text/output) 响应: 文件内容(application/octet-stream) ``` ## 错误处理 系统会对各种错误情况进行处理: - 文件格式不支持 - 文件大小超限 - OCR 处理失败 - 文本处理失败 - 网络连接错误 - 服务器错误 每个错误都会返回对应的状态码和详细错误信息。 ## 开发说明 ### LangChain 集成 系统使用 LangChain 进行文本处理,主要特点: 1. **自定义 Chat Model** - 继承 `BaseChatModel` - 支持自定义 API 调用 - 完整的消息处理 2. **文本处理链** - 使用 LCEL (LangChain Expression Language) - 支持管道操作符 - 灵活的提示词模板 3. **长文本处理** - 自动文本分块 - 智能块合并 - 重复内容去除 4. **提示词优化** - 结构化模板 - 场景特定优化 - 多语言支持 ### 扩展开发 1. **添加新的处理类型** ```python # 在 LangChainService 中添加新方法 def _process_new_type(self, docs): prompt = ChatPromptTemplate.from_template(""" 自定义提示词模板 {text} """) chain = ( {"text": RunnablePassthrough()} | prompt | self.chat_model | StrOutputParser() ) return chain.invoke(docs) ``` 2. **自定义模型集成** ```python # 继承 BaseChatModel class CustomChatModel(BaseChatModel): def _generate(self, messages, **kwargs): # 实现生成逻辑 pass ``` ## 注意事项 1. **文件限制** - 最大文件大小:100MB - 支持的文件格式:PDF, ZIP - ZIP 文件中只处理 PDF 文件 2. **处理时间** - OCR 处理时间与文件大小和页数相关 - 文本处理时间与文本长度相关 - 长文本会自动分块处理 3. **资源使用** - 及时清理临时文件 - 注意内存使用 - 合理设置并发数 ## 许可证 MIT License