VLM 集成¶
在 Doctra 中使用视觉语言模型的指南。
概述¶
Doctra 与视觉语言模型(VLM)集成,将视觉元素(图表、表格、图形)转换为结构化数据。这支持自动数据提取并转换为 Excel、HTML 和 JSON 格式。
支持的提供商¶
- OpenAI:GPT-4 Vision、GPT-4o
- Gemini:Google 的视觉模型
- Anthropic:带视觉功能的 Claude
- OpenRouter:访问多个模型
- Qianfan:百度智能云 ERNIE 模型
- Ollama:本地模型(不需要 API 密钥)
基本配置¶
Doctra 对 VLM 引擎使用**依赖注入模式**。您在外部初始化 VLM 引擎并将其传递给解析器。这提供了更清晰的 API,避免了混合配置,并允许在多个解析器之间重用 VLM 引擎。
from doctra import StructuredPDFParser
from doctra.engines.vlm.service import VLMStructuredExtractor
# 初始化 VLM 引擎
vlm_engine = VLMStructuredExtractor(
vlm_provider="openai",
api_key="your-api-key"
)
# 将 VLM 引擎传递给解析器
parser = StructuredPDFParser(vlm=vlm_engine)
parser.parse("document.pdf")
提供商设置¶
OpenAI¶
from doctra import StructuredPDFParser
from doctra.engines.vlm.service import VLMStructuredExtractor
vlm_engine = VLMStructuredExtractor(
vlm_provider="openai",
vlm_model="gpt-4o", # 可选,如果为 None 则使用默认值
api_key="sk-xxx"
)
parser = StructuredPDFParser(vlm=vlm_engine)
Gemini¶
from doctra import StructuredPDFParser
from doctra.engines.vlm.service import VLMStructuredExtractor
vlm_engine = VLMStructuredExtractor(
vlm_provider="gemini",
api_key="your-gemini-key"
)
parser = StructuredPDFParser(vlm=vlm_engine)
Anthropic¶
from doctra import StructuredPDFParser
from doctra.engines.vlm.service import VLMStructuredExtractor
vlm_engine = VLMStructuredExtractor(
vlm_provider="anthropic",
api_key="your-anthropic-key"
)
parser = StructuredPDFParser(vlm=vlm_engine)
OpenRouter¶
from doctra import StructuredPDFParser
from doctra.engines.vlm.service import VLMStructuredExtractor
vlm_engine = VLMStructuredExtractor(
vlm_provider="openrouter",
vlm_model="x-ai/grok-4", # 可选,默认为 x-ai/grok-4
api_key="your-openrouter-key"
)
parser = StructuredPDFParser(vlm=vlm_engine)
可用模型:
- x-ai/grok-4(默认)- Grok-4 模型
- anthropic/claude-3.5-sonnet - Claude 3.5 Sonnet
- openai/gpt-4o - 通过 OpenRouter 的 GPT-4o
- google/gemini-pro-vision - Gemini Pro Vision
Qianfan(百度智能云)¶
from doctra import StructuredPDFParser
from doctra.engines.vlm.service import VLMStructuredExtractor
vlm_engine = VLMStructuredExtractor(
vlm_provider="qianfan",
vlm_model="ernie-4.5-turbo-vl-32k", # 可选,默认为 ernie-4.5-turbo-vl-32k
api_key="your-qianfan-key"
)
parser = StructuredPDFParser(vlm=vlm_engine)
可用的 ERNIE 模型:
- ernie-4.5-turbo-vl-32k(默认)- 具有 32k 上下文的视觉模型
Ollama(本地模型)¶
from doctra import StructuredPDFParser
from doctra.engines.vlm.service import VLMStructuredExtractor
vlm_engine = VLMStructuredExtractor(
vlm_provider="ollama",
vlm_model="llava:latest", # 可选,默认为 llava:latest
api_key=None # Ollama 不需要 API 密钥
)
parser = StructuredPDFParser(vlm=vlm_engine)
可用模型:
- llava:latest(默认)- LLaVA 视觉模型
- llava:7b - LLaVA 7B 模型
- llava:13b - LLaVA 13B 模型
- gemma2:latest - Gemma 2 模型
- qwen2-vl:latest - Qwen2-VL 模型
先决条件: - Ollama 必须已安装并在本地运行 - 不需要 API 密钥 - 模型在首次使用时自动下载
处理内容¶
启用 VLM 后:
- 表格:转换为带单元格数据的 Excel/HTML
- 图表:提取数据点 + 描述
- 图形:生成描述和上下文
输出文件¶
outputs/
└── document/
└── full_parse/
├── tables.xlsx # 提取的表格数据
├── tables.html # HTML 表格
├── vlm_items.json # 结构化数据
└── ...
成本考虑¶
VLM 处理需要 API 调用:
- 每个文档约 1-10 次调用
- 每个文档约 \(0.01-\)0.10
- 成本因提供商而异