はじめに
Zeroxは、PDF、DOCX、画像、その他のドキュメントをビジュアルモデルを通してMarkdown形式に変換するために設計されたオープンソースプロジェクトです。このプロジェクトはgetomni-aiチームによって開発され、シンプルで効率的なOCR(光学式文字認識)ソリューションを提供します。 zeroxはNodeとPythonの2つのプログラミング言語をサポートし、PDFから画像への処理にはgraphicsmagickとghostscriptを使用します。ユーザーは、表やグラフなどの複雑なレイアウトを持つ様々なドキュメントに対して、ファイルパスとOpenAI APIキーを提供することで、ドキュメントを素早くMarkdown形式に変換することができます。
機能一覧
- PDF、DOCX、画像、その他のファイル形式の変換をサポートする
- NodeとPythonの両方のプログラミング言語をサポートします。
- 視覚モデルを用いた効率的なOCR処理
- PDFから画像への処理のために、graphicsmagickとghostscriptを自動的にインストールします。
- ファイルパスとURL入力の両方をサポート
- 並行処理、ページの向き補正、エラー処理モードなど、さまざまなオプション・パラメーターを提供する。
- 前処理および後処理コールバック関数のサポート
- 変換結果を指定したディレクトリに保存するオプション
ヘルプの使用
設置プロセス
ノードのバージョン
- Node.jsとnpmのインストール
- コマンド実行
npm install zerox
- お使いのシステムにgraphicsmagickとghostscriptがインストールされていることを確認してください。インストールされていない場合は、以下のコマンドを実行してください:
sudo apt-get update
sudo apt-get install -y graphicsmagick ghostscript
パイソン版
- Pythonとpipをインストールする
- コマンド実行
pip install zerox
- お使いのシステムにgraphicsmagickとghostscriptがインストールされていることを確認してください。インストールされていない場合は、以下のコマンドを実行してください:
sudo apt-get update
sudo apt-get install -y graphicsmagick ghostscript
使用方法
ノードのバージョン
- 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,
});
パイソン版
- 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"
)
主な機能
- ファイルの変換Markdown形式のテキストを返します。
- 並行処理を設定する。
concurrency
パラメータを使用して、同時に処理するページ数を制御し、処理効率を向上させる。 - ページの向き補正ページの向き補正機能はデフォルトで有効になっており、変換後のテキストの向きを正しく保つことができます。
- エラー処理モードオプションで、エラーを無視またはスローすることができます。
errorMode
パラメータが設定されている。 - 前処理および後処理コールバック各ページが処理される前後にカスタムアクションを実行するためのコールバック関数を提供します。
- 結果を保存を設定する。
outputDir
パラメータを使用して、変換結果を指定したディレクトリに保存します。
サンプルコード
ノードのバージョン
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,
});
パイソン版
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 ];