PaddleOCR 是百度开发的一款强大且轻量级的OCR工具包,可将图像和PDF与LLM连接起来。它支持超过100种语言,并将文档内容转换为结构化的、可用于AI的数据。
此集成通过以下方式提供PaddleOCR的大模型文档解析功能: PaddleOCRVLLoader 文档加载器。
概览
集成详情
| 类 | 包 | 本地 | 可序列化 | JS支持 |
|---|---|---|---|---|
PaddleOCRVLLoader | langchain-paddleocr | ✅ | ❌ | ❌ |
加载器特性
| 来源 | 文档延迟加载 | 原生异步支持 |
|---|---|---|
PaddleOCRVLLoader | ✅ | ❌ |
该 PaddleOCRVLLoader 使您能够:
- - 使用百度PaddleOCR-VL系列模型(如PaddleOCR-VL、PaddleOCR-VL-1.5)从PDF和图像文件中提取文本和布局信息
- - 处理来自本地文件或远程URL的文档
先决条件
要使用PaddleOCR-VL加载器,您需要:
- **API访问**: 访问PaddleOCR-VL API端点
- **认证**: API的访问令牌(可以直接提供或通过
PADDLEOCR_ACCESS_TOKEN环境变量)
API URL和访问令牌都可以在 PaddleOCR官网上找到。只需点击 **API** 按钮并从提供的API调用示例中复制URL和令牌。
设置
pip install langchain-paddleocr
初始化
基础初始化需要API端点URL和文件路径:
from langchain_paddleocr import PaddleOCRVLLoader
from pydantic import SecretStr
loader = PaddleOCRVLLoader(
file_path="path/to/document.pdf",
api_url="your-api-endpoint",
access_token=SecretStr("your-access-token") # Optional if using environment variable
)
通过环境变量进行认证:
然后在初始化时不使用访问_令牌参数:
loader = PaddleOCRVLLoader(
file_path="path/to/document.pdf",
api_url="your-api-endpoint"
)
高级配置
加载器支持众多配置选项以微调文档处理:
loader = PaddleOCRVLLoader(
file_path=["document1.pdf", "document2.jpg"], # Multiple files
api_url="your-api-endpoint",
access_token=None, # Optional: SecretStr for API authentication
file_type="pdf", # Optional: "pdf" or "image", or None for auto-detection
use_doc_orientation_classify=False, # Enable document orientation classification
use_doc_unwarping=False, # Enable document unwarping
use_layout_detection=None, # Enable layout detection (None = use service default)
use_chart_recognition=None, # Enable chart recognition (None = use service default)
use_seal_recognition=None, # Enable seal recognition (None = use service default)
use_ocr_for_image_block=None, # Run OCR on image blocks (None = use service default)
layout_threshold=None, # Detection threshold (None = use service default)
layout_nms=None, # Apply non-maximum suppression (None = use service default)
layout_unclip_ratio=None, # Layout unclip ratio (None = use service default)
layout_merge_bboxes_mode=None, # Mode for merging layout bounding boxes (None = use service default)
layout_shape_mode=None, # Layout shape mode (None = use service default)
prompt_label=None, # Prompt label for VLM (None = use service default)
format_block_content=None, # Format block content (None = use service default)
repetition_penalty=None, # Repetition penalty for VLM sampling (None = use service default)
temperature=None, # Temperature for VLM sampling (None = use service default)
top_p=None, # Top-p sampling value for VLM (None = use service default)
min_pixels=None, # Minimum pixels allowed in preprocessing (None = use service default)
max_pixels=None, # Maximum pixels allowed in preprocessing (None = use service default)
max_new_tokens=None, # Maximum tokens generated by VLM (None = use service default)
merge_layout_blocks=None, # Merge layout blocks across columns (None = use service default)
markdown_ignore_labels=None, # Layout labels to ignore in Markdown (None = use service default)
vlm_extra_args=None, # Additional VLM configuration parameters (None = use service default)
prettify_markdown=None, # Prettify Markdown output (None = use service default)
show_formula_number=None, # Include formula numbers in Markdown (None = use service default)
restructure_pages=None, # Restructure results across pages (None = use service default)
merge_tables=None, # Merge tables across pages (None = use service default)
relevel_titles=None, # Relevel titles (None = use service default)
visualize=None, # Include visualization results (None = use service default)
additional_params=None, # Additional API parameters
timeout=300, # Request timeout in seconds
)
基础用法
加载文档
# Load a single document
loader = PaddleOCRVLLoader(
file_path="https://arxiv.org/pdf/2408.09869",
api_url="your-api-endpoint"
)
docs = loader.load()
# Inspect the results
for doc in docs[:2]:
print(f"Content: {doc.page_content[:200]}...")
print(f"Source: {doc.metadata['source']}")
print("---")
处理多种文件类型
加载器会根据文件扩展名自动检测文件类型:
# Mixed file types - auto-detected
files = [
"document.pdf", # PDF file
"image.jpg", # Image file
"https://example.com/report.pdf" # Remote PDF
]
loader = PaddleOCRVLLoader(file_path=files, api_url="your-api-endpoint")
支持的图像格式: .jpg, .jpeg, .png, .bmp, .tiff, .tif, .webp 支持的文档格式: .pdf
高级功能
访问原始API响应
加载器会在文档元数据中包含完整的API响应:
docs = loader.load()
first_doc = docs[0]
# Access raw API response for advanced processing
raw_response = first_doc.metadata["paddleocr_vl_raw_response"]
print(f"Layout results: {len(raw_response['result']['layoutParsingResults'])}")
错误处理
加载器提供详细的错误消息以便故障排除:
try:
docs = loader.load()
except ValueError as e:
print(f"Processing failed: {e}")
# Common issues: invalid API endpoint, authentication errors, unsupported file types
最佳实践
错误处理
- 网络超时: 设置适当的
timeout参数以处理大型文档 - 认证: 使用环境变量进行安全的令牌管理
- 文件验证:在处理前验证文件可访问性
故障排除
常见问题
- **认证错误**:确保
PADDLEOCR_ACCESS_TOKEN已设置或access_token已提供 - **文件类型错误**:验证文件扩展名和可访问性
- **API 连接问题**:检查端点 URL 和网络连接
调试模式
要进行详细调试,请检查原始 API 响应:
docs = loader.load()
if docs:
raw_response = docs[0].metadata.get("paddleocr_vl_raw_response")
print("API Response structure:", raw_response.keys())