用途
Zerox 提供一种极其简单的方式,对文档进行 OCR 识别,以便 AI 摄入。文档本质上是一种视觉呈现,面对怪异布局、表格、图表等内容,视觉模型恰好能派上用场。
主要能力
- 接受输入文件(PDF、DOCX、图片等)。
- 将文件转换为一系列图片。
- 将每张图片传递给 GPT 等视觉模型,请求生成 Markdown。
- 聚合所有响应并返回 Markdown。
支持的模型
Zerox 支持跨不同提供商的一系列模型:
Azure OpenAI:
- GPT-4 Vision(gpt-4o)
- GPT-4 Vision Mini(gpt-4o-mini)
- GPT-4.1(gpt-4.1)
- GPT-4.1 Mini(gpt-4.1-mini)
OpenAI:
- GPT-4 Vision(gpt-4o)
- GPT-4 Vision Mini(gpt-4o-mini)
- GPT-4.1(gpt-4.1)
- GPT-4.1 Mini(gpt-4.1-mini)
AWS Bedrock:
- Claude 3 Haiku(2024.03, 2024.10)
- Claude 3 Sonnet(2024.02, 2024.06, 2024.10)
- Claude 3 Opus(2024.02)
Google Gemini:
- Gemini 1.5(Flash, Flash-8B, Pro)
- Gemini 2.0(Flash, Flash-Lite)
使用方式
Zerox 提供 Node 和 Python 两种包。
Node.js SDK
支持来自不同提供商的视觉模型,如 OpenAI、Azure OpenAI、Anthropic、AWS Bedrock、Google Gemini 等。 Zerox 在 PDF 转图像步骤中使用 graphicsmagick 和 ghostscript,这些通常会被自动拉取,但你可能需要手动安装。
从本地路径使用时,maintainFormat 选项会尝试返回格式一致的 Markdown,方法是将前一页的输出作为下一页的额外上下文传入。这要求请求同步运行,因此速度会慢很多,但如果文档包含大量表格数据,或表格经常跨页,该选项就很有价值。
数据提取
Zerox 支持使用 schema 从文档中提取结构化数据。这使你能够以结构化格式从文档中拉取特定信息,而非只获取完整的 Markdown 转换结果。
- 设置 extractOnly: true 并提供 schema 来提取结构化数据。schema 遵循 JSON Schema 标准。
- 使用 extractPerPage 按页提取数据,而非一次性提取整个文档。
- 还可以设置 extractionModel、extractionModelProvider 和 extractionCredentials,以便使用与 OCR 不同的模型进行提取。默认情况下使用相同模型。
Python SDK
支持来自不同提供商的视觉模型,如 OpenAI、Azure OpenAI、Anthropic、AWS Bedrock 等。
安装步骤:
- 在系统上安装 poppler,它应位于 path 变量中。各平台说明参见 pdf2image 文档。
- 安装 py-zerox:
pyzerox.zerox 函数是一个异步 API,使用视觉模型执行 OCR 到 Markdown 的转换。它处理 PDF 文件并将其转换为 Markdown 格式。使用此 API 前,请确保为模型和模型提供商设置好环境变量。 关于环境设置和传递正确模型名称,请参考 LiteLLM 文档。
参数说明:
- cleanup(bool,可选):处理完成后是否清理临时文件。默认 True。
- concurrency(int,可选):并发运行的进程数。默认 10。
- file_path(Optional[str],可选):要处理的 PDF 文件路径。默认为空字符串。
- maintain_format(bool,可选):是否保持与前一页一致的格式。默认 False。
- model(str,可选):用于生成补全的模型。默认 "gpt-4o-mini"。请参考 LiteLLM Providers 获取正确的模型名称,名称可能因提供商而异。
- output_dir(Optional[str],可选):保存 Markdown 输出的目录。默认 None。
- temp_dir(str,可选):存储临时文件的目录,默认为系统临时目录下的某个命名文件夹。如果已存在,Zerox 使用前会删除其内容。
- custom_system_prompt(str,可选):用于模型的系统提示词,会覆盖 Zerox 的默认系统提示词。除非需要某些特定行为,一般不需要。默认 None。
- select_pages(Optional[Union[int, Iterable[int]]],可选):要处理的页面,可以是单个页码或页码可迭代对象。默认 None。
- kwargs(dict,可选):传递给 litellm.completion 方法的额外关键字参数。详见 LiteLLM 文档和 Completion Input。
返回值:ZeroxOutput,包含模型生成的 Markdown 内容以及一些元数据。
输出示例来自 "azure/gpt-4o-mini"。注意,为便于文档阅读,输出经过手动换行。
支持的文件类型
Zerox 结合使用 libreoffice 和 graphicsmagick 进行文档到图像的转换。对于非图片、非 PDF 文件,先使用 libreoffice 将文件转换为 PDF,再转换为图像。
适用场景与限制
适用场景包括:需要将布局复杂、含表格或图表的 PDF、DOCX、图片等文档转换为 Markdown,以便后续 AI 处理;需要从文档中按 schema 结构化提取特定信息;需要按页处理或限制处理页码;以及跨页表格较多、需要保持格式一致的场景。
限制与注意事项:
- maintainFormat 选项需要同步运行请求,速度会慢很多。
- 使用前需安装并配置相应的依赖(如 graphicsmagick、ghostscript、poppler)及模型环境变量。
- Python SDK 中 model 默认值为 "gpt-4o-mini",但实际模型名称可能因提供商而异,需参考 LiteLLM 文档。
- 关于定价、收费、具体效果和性能数据,资料中暂未提供。
本项目采用 MIT 许可证。