zerox - 使用视觉模型将 PDF 转换为 Markdown

7900 Stars 478 Forks 39 Issues 17 贡献者 MIT License Python 语言

代码: https://github.com/getomni-ai/zerox

主页: OmniAI. Automate document workflows

更多AI开源软件AI开源 - 小众AI

zerox基于视觉模型 API 服务,提供了将 PDF 文档转化为 Markdown 的功能。其原理是先将原文件(如 pdf、docx)转换为图片,然后把图片发给视觉模型处理,最后汇总所有结果生成完整的 Markdown 文件。

主要功能

一种非常简单的 OCR 文档以进行 AI 摄取的方法。毕竟,文档应该是一种视觉表示。带有奇怪的布局、表格、图表等。视觉模型很有意义!

  • 传入文件(pdf、docx、image 等)
  • 将该文件转换为一系列图像
  • 将每张图片传递给 GPT 并很好地请求 Markdown
  • 聚合响应并返回 Markdown

Node Zerox安装和使用

npm install zerox

Zerox 使用 和 用于 pdf => 图像处理步骤。这些应该会自动拉取,但您可能需要手动安装。graphicsmagickghostscript​

在 linux 上使用:

sudo apt-get update
sudo apt-get install -y graphicsmagick
Node 用法

**使用文件 URL**

import { zerox } from "zerox";

const result = await zerox({
  filePath: "https://omni-demo-data.s3.amazonaws.com/test/cs101.pdf",
  openaiAPIKey: process.env.OPENAI_API_KEY,
});

**从本地路径**

import path from "path";
import { zerox } from "zerox";

const result = await zerox({
  filePath: path.resolve(__dirname, "./cs101.pdf"),
  openaiAPIKey: process.env.OPENAI_API_KEY,
});
选项
const result = await zerox({
  // Required
  filePath: "path/to/file",
  openaiAPIKey: process.env.OPENAI_API_KEY,

  // Optional
  cleanup: true, // Clear images from tmp after run.
  concurrency: 10, // Number of pages to run at a time.
  correctOrientation: true, // True by default, attempts to identify and correct page orientation.
  errorMode: ErrorMode.IGNORE, // ErrorMode.THROW or ErrorMode.IGNORE, defaults to ErrorMode.IGNORE.
  maintainFormat: false, // Slower but helps maintain consistent formatting.
  maxRetries: 1, // Number of retries to attempt on a failed page, defaults to 1.
  maxTesseractWorkers: -1, // Maximum number of tesseract workers. Zerox will start with a lower number and only reach maxTesseractWorkers if needed.
  model: "gpt-4o-mini", // Model to use (gpt-4o-mini or gpt-4o).
  onPostProcess: async ({ page, progressSummary }) => Promise<void>, // Callback function to r
### 关于 Java 中的 Zerox 概念和技术 在当前提供的引用中,并未提及具体的 **Java Zerox** 技术或概念。然而,可以推测您可能是指代某些特定的技术或者开发者的实践案例。以下是基于现有信息以及扩展的知识来解答您的疑问。 #### 1. 函数式编程中的 `Function` 接口 在引用[1]中提到的内容涉及到了 Java 的函数式接口 `java.util.function.Function`。该接口的核心理念是通过 lambda 表达式简化代码逻辑[^1]。具体到 `Function.identity()` 方法,它返回一个恒等函数,即输入什么就输出什么。这种设计模式通常用于数据流处理场景下的默认操作。 ```java // 使用 Function.identity() Function<String, String> identityFunction = Function.identity(); System.out.println(identityFunction.apply("hello")); // 输出: hello ``` 此部分并未直接关联所谓的 “Zerox”,但如果将其理解为一种极简主义的设计哲学,则可以联想到现代软件工程中提倡的简洁性和可维护性原则。 #### 2. Android 自定义 View 开发中的最佳实践 引用[2]描述了如何创建并优化自定义控件的过程[^2]。虽然这段文字主要针对 Android 平台上的图形绘制功能,但它体现了良好的编码习惯——例如,在构造器中初始化共享资源(如 `Paint` 对象),从而减少内存分配开销并提高性能。 对于跨平台应用而言,“Zerox” 如果被解释成高效利用硬件加速机制的话,那么上述方法确实值得借鉴: - 将耗时的任务移至后台线程; - 避免不必要的重绘动作; - 利用缓存策略保存临时计算结果。 这些技巧同样适用于桌面端或其他嵌入式环境下的 GUI 编程工作。 #### 3. 延伸探讨:是否存在名为 "Zerox" 的框架? 目前公开文档库中并没有确切证据表明存在这样一个叫做 **Java Zerox** 的官方项目或者是广泛认可的标准术语。不过考虑到开源社区活跃度极高,也许有个人开发者命名了自己的工具包为此名号。建议查阅 GitHub 等版本控制系统寻找潜在匹配项。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值