基本用法示例¶
常见 Doctra 用例的实用示例。
示例 1:解析简单 PDF¶
from doctra import StructuredPDFParser
# 初始化解析器
parser = StructuredPDFParser()
# 解析文档
parser.parse("document.pdf")
# 输出保存到:outputs/document/full_parse/
示例 2:使用自定义设置解析¶
from doctra import StructuredPDFParser
from doctra.engines.ocr import PytesseractOCREngine
# 初始化 OCR 引擎
tesseract_ocr = PytesseractOCREngine(lang="eng", psm=4, oem=3)
parser = StructuredPDFParser(
dpi=250, # 更高质量
min_score=0.7, # 更自信的检测
ocr_engine=tesseract_ocr
)
parser.parse("document.pdf", output_base_dir="my_results")
示例 3:扫描文档的增强解析¶
from doctra import EnhancedPDFParser
parser = EnhancedPDFParser(
use_image_restoration=True,
restoration_task="appearance",
restoration_device="cuda" # 使用 GPU
)
parser.parse("scanned_document.pdf")
示例 4:使用 VLM 提取结构化数据¶
from doctra import StructuredPDFParser
from doctra.engines.vlm.service import VLMStructuredExtractor
# 初始化 VLM 引擎
vlm_engine = VLMStructuredExtractor(
vlm_provider="openai",
api_key="your-api-key-here"
)
parser = StructuredPDFParser(vlm=vlm_engine)
parser.parse("data_report.pdf")
# 输出包括:
# - tables.xlsx 包含提取的数据
# - tables.html 包含格式化的表格
# - vlm_items.json 包含结构化数据
示例 5:仅提取图表¶
from doctra import ChartTablePDFParser
parser = ChartTablePDFParser(
extract_charts=True,
extract_tables=False
)
parser.parse("presentation.pdf")
示例 5b:PaddleOCRVL 端到端解析¶
from doctra import PaddleOCRVLPDFParser
# 初始化启用所有功能的解析器
parser = PaddleOCRVLPDFParser(
use_image_restoration=True, # 启用 DocRes 恢复
restoration_task="appearance", # 使用外观增强
use_chart_recognition=True, # 启用图表识别
merge_split_tables=True, # 启用分割表格合并
device="gpu" # 使用 GPU 进行处理
)
# 解析文档 - 自动处理所有内容类型
parser.parse("financial_report.pdf")
# 输出在:outputs/financial_report/paddleocr_vl_parse/
# - result.md:所有内容的 Markdown
# - result.html:格式化的 HTML 输出
# - tables.xlsx:Excel 格式的所有表格和图表
# - tables.html:结构化的表格和图表
示例 6:可视化布局检测¶
from doctra import StructuredPDFParser
parser = StructuredPDFParser()
# 显示布局检测
parser.display_pages_with_boxes(
pdf_path="document.pdf",
num_pages=3,
save_path="layout_visualization.png"
)
示例 7:独立图像恢复¶
from doctra import DocResEngine
# 初始化恢复引擎
engine = DocResEngine(device="cuda")
# 恢复单个图像
restored_img, metadata = engine.restore_image(
image="blurry_document.jpg",
task="deblurring"
)
# 保存结果
restored_img.save("restored.jpg")
print(f"处理时间:{metadata['processing_time']:.2f}秒")
示例 8:批量处理¶
import os
from doctra import StructuredPDFParser
parser = StructuredPDFParser()
# 处理目录中的所有 PDF
pdf_directory = "documents"
for filename in os.listdir(pdf_directory):
if filename.endswith(".pdf"):
pdf_path = os.path.join(pdf_directory, filename)
print(f"处理 {filename}...")
parser.parse(pdf_path)
print(f"完成 {filename}")
示例 9:错误处理¶
from doctra import StructuredPDFParser
parser = StructuredPDFParser()
try:
parser.parse("document.pdf")
print("处理成功!")
except FileNotFoundError:
print("错误:未找到 PDF 文件")
except Exception as e:
print(f"处理期间出错:{e}")