レイアウト、表式、境界ボックスに対応した軽量 PDF パーサー

2026/10/02 1:14

レイアウト、表式、境界ボックスに対応した軽量 PDF パーサー

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

Papero は、PDF、DOCX、PPTX、XLSX、EPUB および HTML など多様な形式から構造化されたコンテンツを抽出することを目的とした、ユニークな機械学習不使用ユーティリティです。本ツールは、重厚な GPU リソースやクラウド処理を必要とせず、ローカル CPU 上またはウェブブラウザ内で動作します。レイアウト解析には PDFium のような既存のライブラリを利用し、OCR には Tesseract を使用(スキャン画像に対応するサーバーサイドサポートあり)、非 PDF メタデータの抽出には Apache Tika を利用します。このアプローチにより、複雑なレイアウト、読み順、列整列、フォント、図表、数式を維持した高忠実度の出力が可能となり、これらを LaTeX またはイメージとして Word や HTML 形式へエクスポートし、すべてのブロックに対してバウンディングボックスを付与します。ベンチマークでは、54 の高密度研究論文においてゼロの失敗を確認しており、単一のラップトップ CPU でページあたりわずか 39 ミリ秒で処理可能です。ユーザーは CLI または Python API コールを通じてフォルダをバッチ変換し、RAG レディなデータセットを生成でき、詳細なレポートを作成することで、高密度 Word エクスポートにおける潜在的な改行問題や境界のないテーブルでの課題などを特定できます。若干の制限は存在します(線形化された行列出力やスキャンドキュメントに対するサーバーサイド OCR の必要性など)が、Papero はページの重ね書きやレイアウト再構築の確認といった本質的な機能を提供しており、プライバシー、スピード、ローカル制御を重視する研究者にとって堅牢なソリューションとなります。

Text to translate:

Improved Summary: Papero is a unique, machine-learning-free utility designed to extract structured content from diverse formats including PDFs, DOCX, PPTX, XLSX, EPUB, and HTML without requiring heavy GPU resources or cloud processing. Operating entirely on local CPUs or within a web browser, it leverages established libraries like PDFium for layout analysis and Tesseract for OCR (with server-side support for scanned images), while using Apache Tika for non-PDF metadata extraction. This approach ensures high-fidelity output that preserves complex layouts, reading orders, column alignment, fonts, figures, and mathematical formulas—exported as LaTeX or images—to Word or HTML formats with bounding boxes for every block. Benchmarks demonstrate zero failures across 54 dense research papers, processing pages in just 39 milliseconds on a single laptop CPU. Users can batch convert folders into RAG-ready datasets via CLI or Python API calls, generating detailed reports that identify specific issues such as potential line breaks in dense Word exports or challenges with borderless tables. While minor limitations exist, such as linearized matrix outputs and the need for server-side OCR for scanned documents, Papero offers essential capabilities like drawing over pages and verifying layout reconstruction, making it a robust solution for researchers prioritizing privacy, speed, and local control.

本文

パペロ:高機能なスタックなしで文書構造を抽出する

PDF から Markdown、JSON、Word、Excel への変換ツール。読み順、表(テーブル)、数式、図表、および各ブロックの位置情報まで完全に対応します。機械学習モデル不要。CPU 専用であり、ブラウザ、Python スクリプト、あるいは API として動作します。

  • [ブラウザで試す] · [クイックスタート] · [ベンチマーク]

ブラウザアプリですぐに(30 秒)

PDF を読み込み、あらゆるブロックを詳しく検証できます。表や数式をチェックし、Word へエクスポート可能です。PDF はあなたのマシンから決して離れません。

なぜ papero か?

PDF からテキスト取得は簡単ですが、その構造(どの列が先か、どの行が表の一部か、数式はどこにあるか)を復元することが、RAG や LLM の出力の有効性を決定づけます。papero は単なる幾何学計算のみを使用するため、ラップトップの CPU 上でも高速に動作します。

  • 📖 読み順: 2 カラムまたは 3 カラムの論文は列ごとに順次処理されます。ヘッダー、フッター、ページ番号、ロゴなどは除外されます。
  • ▦ リアルな表: 罫線付き、無罫線、LaTeX の booktabs 形式の表も復元され、CSV または Excel へエクスポート可能です。
  • ∑ 数式: 指数、添字、重ねた分数などは LaTex 形式に変換され、クロップ済み画像も提供されます(例:$\frac{5}{12}$)。
  • 📍 すべての位置情報: 各ブロックには境界ボックス(bbox)が付属するため、正確な場所を引用したり切り出したりできます。
  • 🖼 図表: 画像とベクター図表はキャプション付きで PNG として保存されます。
  • 📝 Word への復元: カラム配置やフォント形式が維持されるため、.docx エクスポート元のページ外観とほぼ一致します。

その他機能:

  • LaTeX PDF のアクセント記号を自動補正(例:Computa¸ca˜o → Computação)。
  • フォーム生成ツールで使用される白文字は無視されます。
  • スキャンされたページは OCR を通じて処理されます。
  • Apache Tika を使用して、DOCX/PPTX/XLSX/EPUB/HTML の形式も読み込めます。

クイックスタート

インストールは

pip
で行います。

pip install papero-extract

Python スクリプトでの基本的な使い方は以下の通りです。

from papero_extract import extract

doc = extract("paper.pdf")
print(doc.to_markdown())

ブラウザアプリでも PDF をドロップして直ちにエクスポートが可能です。


より高度な Python 利用

表、数式、位置情報、画像を含む詳細なデータを取得します。

データのアクセス

from papero_extract import extract, extract_text

doc = extract("paper.pdf", images=True)

# テーブルデータの取得
doc.tables[0].rows      # [["Model", "Accuracy"], ["Base", "0.81"], ...]

# 数式の取得(LaTeX 形式)
doc.formulas[0].latex   # "E = mc^{2}"

# 画像データへのアクセス
doc.figures[0].image.data  # PNG バイトデータ

# ブロックごとの詳細(読み順と位置情報付き)
for block in doc.pages[0].blocks:  
    print(block.type, block.bbox, block.text[:60])

出力形式の選択

整列やインデントを維持した HTML、完全な JSON データへ変換可能です。

  • doc.to_html()
    : 整列とインデントを維持します。
  • doc.to_dict()
    : 完全な JSON データを取得します。
  • doc.to_markdown(math="latex")
    : 数式を LaTeX 形式で抽出(演算子、関数などを検出)。
  • extract_text("contract.pdf").text
    : テキストのみを抽出(最速モード)。

多様なファイル形式の読み込み

Apache Tika を使用して、DOCX/PPTX/XLSX/EPUB/HTML の形式も読み込めます。

extract("slides.pptx").to_markdown()  # PPTX などから抽出可能

オプションとデフォルト値

オプションデフォルト値説明
pagesall / "1-3,5,10-"処理対象のページ範囲
imagesFalse / True図表、表、数式を PNG としてクロップするかどうか
tables / formulasTrue / False検出の有無切り替え
ocr"auto"OCR の実行モード:scanned pages only ("auto"), forced ("force"), off ("off")
ocr_language"por+eng"Tesseract の言語設定(デフォルト)
tikaTrue / FalseApache Tika を使用してレイアウトエンジンのみを実行するかどうか
workers1長時間かかる文書処理用のプロセス数

コマンドラインインターフェース (CLI)

基本コマンド

  • Markdown + 画像抽出:
    papero-extract extract paper.pdf -o paper.md --images
  • JSON 形式へ:
    papero-extract extract paper.pdf -o paper.json
  • 表のみの CSV 出力:
    papero-extract extract paper.pdf -f csv -o tables.csv
  • HTML 抽出(ページ指定):
    papero-extract extract paper.pdf -p 1-5 -f html
  • 数式を LaTeX 形式で出力:
    papero-extract extract paper.pdf --math latex -o p.md
  • クリーンテキストのみ(最速):
    papero-extract extract paper.pdf --fast

バッチ処理とフィデリティレポート

RAG データセット生成や、問題のありそうな文書の特定が可能です。

papero-extract batch ./documents -o ./dataset

./dataset/
フォルダ構成:

  • documents/: 各 PDF に対応する
    .md
    と
    .json
    ファイル(サブフォルダ構造を保持)。
  • chunks.jsonl: ヘッダーで切り分けられたすべてのチャンク(表はグリッド保持)。
  • manifest.json: 文書ごとの情報(ページ数、表の数、フィデリティスコア)。
  • fidelity/:
    • report.json
      : 合計数、シグナル、問題点。
    • summary.html
      : ブラウザで表示可能なレポート。
    • problematic/
      : エラーや警告のある文書ごとの
      .json
      ファイル。

各チャンクは元の出所がわかるため、検索ヒットをページ上で視覚的に確認できます:

{"id": "paper.pdf#12", "type": "table", "headings": ["4 Results"], 
 "blocks": ["p6-b3"], "text": "Table 2: Accuracy per model..."}

フィデリティチェック項目:

シグナル確認項目
textPDFium が読み取ったすべての文字列が出力に含まれているか
reading_order同じ列内で、下のブロックよりも上のブロックを読み取っていないか(逆順)
tables「Table N」というキャプションに対応する表があり、グリッドになっているか
figures「Figure N」というキャプションに対応する図があるか
formulas各数式に LaTeX 表現があり、マッピングできないグリフがないか

Python でバッチ処理結果を取得:

from papero_extract.batch import run_batch
run_batch("./documents", "./dataset", workers=8)["totals"]

問題点の確認(例):

assess(doc, reference_text("paper.pdf")).issues
# [Issue(code="table_not_detected", pages=[5], …)]

REST API & Docker

docker compose up
で API、Apache Tika、Tesseract、ブラウザアプリをすべて起動できます。

抽出コマンド例

  • Markdown 形式:
    curl -F "file=@paper.pdf" "localhost:8000/v1/extract?format=markdown"
  • ZIP 出力(画像付き):
    curl -F "file=@paper.pdf" "localhost:8000/v1/extract?format=zip&images=true" -o paper.zip
  • ブロック情報付:
    curl -F "file=@paper.pdf" "localhost:8000/v1/extract?per_page=true"

API パラメータ

パラメータデフォルト値説明
modestructured / faststructured: レイアウト + Tika のみ、fast: テキストのみ
formatjsonjson, markdown, text, html, csv, zip など
pagesall / 1-3,5,10-処理対象のページ範囲
per_pagefalse / trueJSON にブロック位置情報を含めるかどうか
imagesfalse / true図表などをクロップするかどうか
ocrautoauto, force, off

出力結果と形式比較

各ブロックは「何であるか(タイプ)」および「どこにあったか(位置情報:bbox)」を認識しています。

JSON スキーマ例

{
  "type": "table",
  "bbox": [56.7, 294.8, 481.9, 374.2],
  "rows": [["Model", "Accuracy"], ["Base", "0.81"]],
  "caption": "Table 1: Comparison between models."
}

ブラウザアプリ vs Python/CLI/API

出力形式Python/CLI/APIブラウザアプリ
Markdown, プレーンテキスト, JSON✓✓
HTML(整列とインデントを維持)✓✓
表の CSV、画像付き ZIP✓✓
Word .docx(ページ外観維持)×✓
Excel .xlsx(表ごとのシート)×✓

ブロックタイプ詳細

ヘッディング(レベル付き)、段落、リストアイテム、表(行付き)、図表、数式(LaTeX 付き)、キャプション、コード、およびテキストとは別扱いのヘッダー・フッター・ページ番号が含まれます。境界ボックスは

[x0, y0, x1, y1]
で指定され、座標系の原点はページの左上です。


ベンチマーク

GPU なし、単一ラップトップの CPU 上で動作させる多カラム arXiv 論文(数式、表、図表あり)での検証結果。

  • **papero **(fast): クリーンなテキストを返します。
  • **papero **(structured): 読み順、表、数式、図表を再構築し、54 の論文で 0 フェイル、1 ページあたり平均 39ms(中央値)の性能を達成しました。
ツールライセンスML モデル / PyTorch が必要か多カラム読み順構造化された表数式境界ボックス (bbox)DOCX/PPTX/XLSX/EPUB 対応ブラウザ全体内動作
paperoMITなし✓✓グリフ + 画像から LaTex✓✓✓
PyMuPDFAGPLなし一部——✓一部×
pdfplumberMITなし×××✓××
pypdfBSDなし×××✓××
DoclingGPLあり✓✓✓✓✓×
MarkerMITあり✓✓✓✓一部×

ML ベースのツールは複雑な数式(行列、整列系など)では依然として優れています。papero もグリフと画像から近似的な LaTeX と画像を提供するため、情報の損失を防ぐことができます。


仕組み

1 つのファイルに対して同時に 2 つのエンジンが動作します:

  1. **レイアウトエンジン **(PDFium): すべてのグリフ(文字)とその位置、フォント、サイズを読み込み、罫線と画像を処理。その後、列を意識した XY カットにより、カラム、表、数式、リスト、図表を再構築します。
  2. **メタデータエンジン **(Apache Tika): メタデータ、タグ付き PDF のヘッディング、OCR(Tesseract)、および PDF でないあらゆる形式を読み取ります。

ブラウザアプリでは、このアルゴリズムを JavaScript に移植して pdf.js で動作させ、CI でブロック単位で両エンジンが一致するか確認しています。


制限事項

  • 数式: グリフとストロークから再構築されます。行列、整列系、ネスト構造は線形(1 次元)に展開されます(ただし、クロップされた画像は常に提供されるため)。PDF 製作者がグリフを再番号付けした場合、Python エンジンでは認識できない可能性があります。
  • Word 出力: 各ページは独立したページとして出力されます。Word が改行位置を変更する場合、文字列の一部が次の余計な行に流れてしまうことがあります。
  • 無罫線の表: カラム間の非常に狭いギャップがテキストとして誤認識される可能性があります。
  • スキャンされた PDF: OCR の必要があり、サーバーサイドのパスで実行されます(Tesseract は Docker イメージに含まれています)。
  • Word/Excel 出力: 現時点ではブラウザアプリ内でのみ利用可能です。

開発環境へのセットアップ

git clone https://github.com/beatrizalmeidaf/papero-pdf-text-extractor.git && cd papero-pdf-text-extractor
pip install -e ".[dev]"

# 回帰テストなどを実行
pytest -q
ruff check src tests && ruff format --check src tests

npm install --prefix tests/js && python tests/js/expected.py tests/js/out && node tests/js/parity.mjs tests/js/out

# ブラウザアプリを起動(http://localhost:8000)
python -m http.server -d web
  • src/papero_extract/
    : Python エンジン、API、CLI
  • web/
    : ブラウザアプリ(GitHub Pages 向け)
  • tests/js/
    : 2 つのエンギンの一致性を確認
  • benchmarks/
    : データセットをダウンロードしグラフを描画

コントリビューション

papero が誤って処理する PDF を見つけたら、それは最も価値のある Issue です。該当ファイルや期待内容を投稿ください(読み順、表、数式、エンコーディングなどあらゆる問題)。 時間が節約できた場合は、🌟 星評価をお願いします。

同じ日のほかのニュース

一覧に戻る →

2026/10/02 4:33

Pi 1.0

## 日本語翻訳: Pi 1.0 のリリースは、機能の急速な拡張よりも安定性を優先する点において、そのエージェントハネスにおける顕著な進化を表しています。すべての最新技術を即時に採用する代わりに、このバージョンでは既存のシステム制約に対して堅牢性が証明された後にのみ変更を統合することに焦点を当てています。この「強化された」アプローチにより、ソフトウェアは不必要な複雑性を持たずに簡潔かつ拡張可能であるように保たれます。新機能には、Model Context Protocol (MCP) へのネイティブ対応、Jev や画像モデルといった大型言語モデル以外との互換性、遅延ツールロード、会話中のシステムメッセージが含まれます。ユーザーエクスペリエンスの向上のために、インターフェースも新しいテーマとデフォルトのフルスクリーンモードで強化されました。何十万もの週次ユーザーからのフィードバックに基づき開発が進められた本プロジェクトは、MIT ライセンスの下でオープンソースとして存続しています。今後の展望として、実験的な「Pi Durable」パッケージでは、ミニマリズムを維持しながら長期的な AI タスクの管理機能を備えています。これにより、ユーザーは異なるプラットフォーム上で、より長期間にわたって基盤となる AI を自在に操作・制御することが可能になります。Pi 1.0 のインストールは `curl` または PowerShell コマンドによるものが利用でき、Pi Durable については `npm install @earendil-works/pi-durable @earendil-works/pi-ai @earendil-works/chord` を実行する必要があります。両方とも pi.dev でドキュメントが提供され、github.com/earendil-works/pi にコードが公開されています。Codemode の機能には、Claude Opus、GPT、Jev などの特定モデルを使用してコミットのサマリーを記述するスクリプトや、自作拡張の記述などが含まれます。

2026/10/02 6:07

Web 開発教育の死

## Japanese Translation: 生成 AI は、エコシステムを破壊することで Web 開発者、教育者、出版社の経済的健全性を根底から覆している。Baldur Bjarnason や Axel Rauschamayer のような著者および出版社は収入が急落し、事業の閉鎖に追い込まれている。特に Rauschamayer は 2026 年に書籍からの収益がゼロとなり、AI クローラーが彼の作品を盗みながら広告収益を生み出さなかったため、コンテンツをオフラインに移すことを余儀なくされた。同様に、Web 開発者の教育者である Josh W. Comeau や Kyle Cook も、LLM がタスクを自動化し仕事を吸収したことで Comeau の収益は半分になり、Cook は深層技術チュートリアルから AI モデルに関する浅く簡単に制作される動画への視聴者のシフトにより半分もの視聴数を失ったと報告している。 この危機は財務面のみならず、Salma Alam-Naylor のような専門家の中で深刻なバーンアウトと不安を引き起こしており、彼女のスキルや共感力が業界で貶められたため、一般に露出の少ない低給の役割を受け入れた。この変化は高品質な教育を脅かしており、開発者は学習のためにエラーが発生しやすいチャットボートに頼る傾向が強まっている一方、Rachel Andrew は GenAI が主題領域の専門家と編集者の間の重要な関係性を損ない、生産性の負担を読者に押し付けるだけであり、根本原因を解決したり実際の効率を高めたりしていないと主張している。究極的には、現在のトレンドは真実の人間の協働よりも短期的利益を優先している。

2026/10/02 1:18

Clef:オープンソースの意思決定モデルと新しい強化学習ファインチューニングプラットフォーム

## Japanese Translation: Cloudflare は、Apache 2.0 ライセンスの下で Workers AI 上にホストされる 2 つの新しい決定モデル、Clef および Clef-flash を発売します。これらのモデルは、標準的な大規模言語モデル(LLM)がしばしば予測不可能なテキストを生成するのと鮮明な対比をなすように、低コストで一貫性があり、厳格に型付けされた構造化された出力を提供します。Qwen アーキテクチャに基づいて構築されており(Clef は Qwen3.8-27B、Clef-flash は Qwen3.5-9B)、画像分類のためにビジョンエンコーダーで強化され、非自己回帰的処理を利用して推論速度を高速化しています—Cloudflare の一般 LLM gpt-oss-120b と比較して、脅威インテリジェンスタスクにおいて 2 倍のレイテンシ削減を示しました。現在 Jev Decision Index ベンチマークで最高スコアを得ており(BFCL ケース exact ベンチマークで 98.47 のほぼ完璧なスコア)、Clef は他のモデルである Jev および Kev 9B を凌ぐような大きな性能向上を提供しています。両モデルとも 64k コンテキストウィンドウを備えており(Jev と比較して 32k)、データが保存されることも、トレーニングに使用されることもないというエンタープライズ対応の保証をサポートします。AI Gateway および Workers AI といった Cloudflare の既存インフラストラクチャを活用し、これらのツールはすでにドメイン分類およびサポートトラージングのための内部運用を動力付けています。このリリースは、Cloudflare の「エージェントクラウド」ミッションを実現するために高速分類器向けニッチ市場への戦略的参入を意味し、新しい強化学習製品および Forward-Deployed Engineer サービスを通じた微調整のためのさらなる機能を提供します。

レイアウト、表式、境界ボックスに対応した軽量 PDF パーサー | そっか~ニュース