pdf2epub-paddle — スキャンPDFをEPUBに変換するPaddleOCRツール

Tool

概要

このプロジェクトは、スキャンPDF(画像化されたページ)を高品質なEPUBに変換することを目的としたPythonツールです。コアにはBaiduのPaddleOCR Layout Analysis APIを使い、ページ内のテキストブロックや画像、表、見出しを自動で検出します。検出した構造に基づいてテキストを整理し、見出し語句(例:“Chapter 1” や “第1章”)を基準に章分けを行い、元の画像中の図版はEPUB内に埋め込みます。READMEは英中二言語で用意され、サンプルや設定の説明が含まれています。GitHub

リポジトリの統計情報

  • スター数: 34
  • フォーク数: 3
  • ウォッチャー数: 34
  • コミット数: 4
  • ファイル数: 8
  • メインの言語: Python

主な特徴

  • PaddleOCRのLayout Analysisを利用した高精度なレイアウト解析
  • 見出しに基づく自動章分割(英語・多言語の見出しパターンに対応)
  • 画像の抽出・埋め込みにより原版の図版を保持
  • 正規表現等による後処理でOCR誤認識を補正し、読みやすいテキストに整形

技術的なポイント

本ツールの技術的中核は「レイアウト解析+後処理ワークフロー」です。まずPDFページを画像化(外部ツールあるいはライブラリで行う想定)し、画像をPaddleOCRのLayout Analysis APIに送信してページ内の領域(段落、見出し、画像、表など)を識別します。APIは各ブロックのバウンディングボックスと種類情報を返すため、ツール側ではそれらを座標ベースでソートしてページ単位・連続ページ単位での段落再構築を行います。

次にOCRテキストの取得と正規化です。OCR結果には改行や空白、認識ミスが入るため、正規表現ベースの後処理(repo内のdebug_regex.pyがその役割を示唆)で見出しパターンを抽出し、章境界を決定します。章分割は「見出しテキストの語彙パターン」「フォント/位置情報の傾向(見出しは中央寄せや大きめの縦幅)」などを組み合わせて行うことが多く、本リポジトリも複数ルールの組み合わせで精度向上を図っています。

画像は元ページから切り出してEPUB内に保存・参照することで、図版や表の体裁を維持します。EPUB化の手順は、解析後のHTML(各章をHTMLセクション化)を生成し、画像をリンク、メタデータ(タイトル・著者・言語など)を埋め込み、最終的にOPF/NCX構造を整えてEPUBパッケージとしてまとめる流れが基本です。実装上はHTTP通信(API呼び出し)、画像処理(切り出し/リサイズ)、テキスト処理(正規表現・Unicode正規化)、およびEPUB生成処理が主要なモジュールになります。

注意点として、PaddleOCRの外部API利用に伴うレイテンシとプライバシー(クラウド送信)の考慮、スキャン品質に依存するOCR精度、表組の複雑さに対する扱いの難しさがあります。これらは設定や後処理ルールの調整、あるいはローカルPaddle推論環境の導入で改善可能です。リポジトリには英中のREADMEとlicenseがあり、実際の運用ではAPIキー管理や大容量PDFの分割処理、エラーハンドリングの拡充が求められます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • LICENSE: file
  • README.md: file
  • README_zh.md: file
  • debug_regex.py: file

…他 3 ファイル

(注)ファイル数は合計8で、主要処理やユーティリティ、サンプルのスクリプトが含まれる想定です。詳細はリポジトリを直接参照してください。

まとめ

スキャンPDFをEPUB化するためのシンプルで実用的なツールセット。APIベースの高精度レイアウト解析を活かしたワークフローが魅力です。

リポジトリ情報:

READMEの抜粋:

Scanned PDF to Epub Converter

English | 中文

This tool converts scanned PDF books into clean, readable EPUB ebooks using the Baidu PaddleOCR Layout Analysis API.

Features

  • High-Quality Layout Analysis: Uses PaddleOCR to intelligently detect paragraphs, headers, images, and tables.
  • Smart Chapter Splitting: Automatically splits books into chapters based on headers (e.g., “Chapter 1”, “Part I”).
  • Image Embedding: Preserves images from the original…