SuperAPI AI 工具集

zerox

Zerox 是一个基于视觉模型的开源 OCR 与文档提取工具,旨在将 PDF、DOCX、图片等文档转换为便于 AI 摄入的 Markdown 格式。其核心逻辑是先将文件转换为一系列图片,再逐张发送给 GPT 等视觉模型请求 Markdown 输出,最后聚合结果返回完整 Markdown。Zerox 提供 Node.js 和 Python 两种 SDK,支持 OpenAI、Azure OpenAI、Anthropic、AWS Bedrock、Google Gemini 等多种提供商下的视觉模型。除基础 OCR 外,Zerox 还支持通过 JSON Schema 进行结构化数据提取,允许按页提取,并可单独指定提取模型。它还提供 maintainFormat 选项,通过将前一页输出作为下一页的额外上下文,保持跨页表格等复杂布局的格式一致性。Zerox 使用 graphicsmagick、ghostscript 以及 LibreOffice 处理文档到图像的转换,采用 MIT 许可证。

访问官网

工具介绍

用途

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 等。

安装步骤:

  1. 在系统上安装 poppler,它应位于 path 变量中。各平台说明参见 pdf2image 文档。
  2. 安装 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 许可证。