本文于 2025-01-19 21:15 更新,部分内容具有时效性,如有失效,请留言
综合介绍
Zerox是一个开源项目,旨在通过视觉模型将PDF、DOCX、图像等文件转换为Markdown格式。该项目由getomni-ai团队开发,提供了简单高效的OCR(光学字符识别)解决方案。Zerox支持Node和Python两种编程语言,利用graphicsmagick和ghostscript进行PDF到图像的处理。用户可以通过提供文件路径和OpenAI API密钥,快速将文档转换为Markdown格式,适用于各种复杂布局的文档,如表格和图表。
功能列表
- 支持PDF、DOCX、图像等文件格式的转换
- 提供Node和Python两种编程语言的支持
- 利用视觉模型进行高效OCR处理
- 自动安装graphicsmagick和ghostscript进行PDF到图像的处理
- 支持文件路径和URL两种输入方式
- 提供多种可选参数,如并发处理、页面方向校正、错误处理模式等
- 支持预处理和后处理回调函数
- 可选择保存转换结果到指定目录
使用帮助
安装流程
Node版本
- 安装Node.js和npm
- 运行命令
npm install zerox
- 确保系统已安装graphicsmagick和ghostscript,若未安装,可运行以下命令:
sudo apt-get update
sudo apt-get install -y graphicsmagick ghostscript
Python版本
- 安装Python和pip
- 运行命令
pip install zerox
- 确保系统已安装graphicsmagick和ghostscript,若未安装,可运行以下命令:
sudo apt-get update
sudo apt-get install -y graphicsmagick ghostscript
使用方法
Node版本
- 导入zerox模块:
import { zerox } from "zerox";
- 使用文件路径进行转换:
const result = await zerox({
filePath: "path/to/file.pdf",
openaiAPIKey: process.env.OPENAI_API_KEY,
});
- 使用URL进行转换:
const result = await zerox({
filePath: "https://example.com/file.pdf",
openaiAPIKey: process.env.OPENAI_API_KEY,
});
Python版本
- 导入zerox模块:
from zerox import zerox
- 使用文件路径进行转换:
result = zerox(
file_path="path/to/file.pdf",
openai_api_key="your_openai_api_key"
)
- 使用URL进行转换:
result = zerox(
file_path="https://example.com/file.pdf",
openai_api_key="your_openai_api_key"
)
主要功能操作流程
- 文件转换:提供文件路径或URL,调用zerox函数进行转换,返回Markdown格式的文本。
- 并发处理:通过设置
concurrency
参数,控制同时处理的页面数量,提高处理效率。 - 页面方向校正:默认启用页面方向校正功能,确保转换后的文本方向正确。
- 错误处理模式:可选择忽略错误或抛出错误,通过设置
errorMode
参数进行配置。 - 预处理和后处理回调:提供回调函数,在每页处理前后执行自定义操作。
- 保存结果:通过设置
outputDir
参数,将转换结果保存到指定目录。
示例代码
Node版本
import { zerox } from "zerox";
const result = await zerox({
filePath: "path/to/file.pdf",
openaiAPIKey: process.env.OPENAI_API_KEY,
cleanup: true,
concurrency: 10,
correctOrientation: true,
errorMode: "IGNORE",
maintainFormat: false,
maxRetries: 1,
maxTesseractWorkers: -1,
model: "gpt-4o-mini",
onPostProcess: async ({ page, progressSummary }) => Promise<void>,
onPreProcess: async ({ imagePath, pageNumber }) => Promise<void>,
outputDir: "output",
pagesToConvertAsImages: -1,
});
Python版本
from zerox import zerox
result = zerox(
file_path="path/to/file.pdf",
openai_api_key="your_openai_api_key",
cleanup=True,
concurrency=10,
correct_orientation=True,
error_mode="IGNORE",
maintain_format=False,
max_retries=1,
max_tesseract_workers=-1,
model="gpt-4o-mini",
on_post_process=lambda page, progress_summary: None,
on_pre_process=lambda image_path, page_number: None,
output_dir="output",
pages_to_convert_as_images=-1,
)
我们使用 libreoffice
和 graphicsmagick
的组合来进行文档到图像的转换。对于非图像/非 PDF 文件,我们使用 libreoffice 将该文件转换为 PDF,然后再转换为图像。
[ "pdf", // Portable Document Format "doc", // Microsoft Word 97-2003 "docx", // Microsoft Word 2007-2019 "odt", // OpenDocument Text "ott", // OpenDocument Text Template "rtf", // Rich Text Format "txt", // Plain Text "html", // HTML Document "htm", // HTML Document (alternative extension) "xml", // XML Document "wps", // Microsoft Works Word Processor "wpd", // WordPerfect Document "xls", // Microsoft Excel 97-2003 "xlsx", // Microsoft Excel 2007-2019 "ods", // OpenDocument Spreadsheet "ots", // OpenDocument Spreadsheet Template "csv", // Comma-Separated Values "tsv", // Tab-Separated Values "ppt", // Microsoft PowerPoint 97-2003 "pptx", // Microsoft PowerPoint 2007-2019 "odp", // OpenDocument Presentation "otp", // OpenDocument Presentation Template ];