Skip to content

DN_SuperBook_PDF_Converter - スキャン書籍 PDF をデジタル書籍並みに大変クリアに読みやすくする AI PDF 高品質化・各種調整ツール

License

Notifications You must be signed in to change notification settings

dnobori/DN_SuperBook_PDF_Converter

Repository files navigation

1. DN_SuperBook_PDF_Converter - スキャン書籍 PDF をデジタル書籍並みに大変クリアに読みやすくし、AI-OCR 処理・HTML・Markdown 出力・図表抽出も可能な AI PDF 高品質化・各種調整ツール

2026/01/22 登 大遊

バージョンアップ履歴

  1. 2026/01/20 v1.00 初回公開
  2. 2026/01/22 v2.00 機能追加・不具合修正
    大変高精細な、日本語対応 AI OCR 機能を追加 (高精細な YomiToku エンジンを内部呼出し) し、「検索可能な文字埋め込み PDF」、「Markdown」、「HTML」、「JSON」形式を出力可能に (デフォルトで無効だが、ConvertPdf コマンドの /ocr:yes オプションで有効化可能)。
    パラメータチェックの if 文の判定が逆で、srcDir と dstDir が同じ (上書きモード) でなければ動作しなかった不具合を修正。むしろ srcDir と dstDir が同一であるとエラーになるようにした。

1.1. はじめに

本ソフトウェア「DN_SuperBook_PDF_Converter」は、私がこれまで、大量のコンピュータやその他の学術書 (電子書籍化されていない古い書籍) を、自ら PDF スキャンして PC やタブレット画面で読む際に、最大限の快適さを求めるために、自分のために自作したツールです。

これは、自分の読書のために、可能な限りの快適性を最大限追及して作ったツールです。先日、雑談をしていたところ、これを欲しいという奇特なデジタル・ヒューマンが現われたので、GitHub に置いておくことにいたしました。

2026/01/22 公開の v2.00 では、大変高精細な、日本語対応 AI OCR 機能を追加 (YomiToku エンジンを内部呼出し) し、「検索可能な文字埋め込み PDF」、「Markdown」、「HTML」、「JSON」形式を出力可能にしました (デフォルトで無効だが、ConvertPdf コマンドの /ocr:yes オプションで有効化可能)。

1.2. 本ソフトウェアによるスキャン PDF の紙の汚れ、裏写り、インクのにじみ、JPEG のモアレノイズの鮮明化機能の実行結果

【引用元: 鮮明化 例 1】 著名な書籍である「民法 I 第 4 版: 総則・物権総論」 (著者: 内田貴先生、ISBN: 4130323512、2008 年 4 月出版、電子書籍未出版) の P.226 のページ部分のごく一部の切り抜き部分を引用し、処理前と処理後の結果を示します。この 18 年前の名著を処理のサンプルとして用いる理由は、後述のとおり、本書にはデザイン上いろいろな特徴があり、本ソフトウェアを作る際に乗り越える必要があった必要な追加的処理が高密度に出現することから、本ソフトウェアの開発においてリファレンスとして有用であったことによります。たとえば、ページ番号部分に特有の飾り文字が付いており、ページ番号自動検出時のアルゴリズムを実装する際に追加的処理を必要とする特殊なデザインになっています (言い換えれば、この書籍のページ番号部分の読み取りに成功すれば、たいていの書籍のページ番号部分の読み取りに成功します)。

【引用元: 鮮明化 例 2】 著名な書籍である「分散システム 第二版」 (Andrew S. Tanenbaum (著), Maarten van Steen (著), 水野 忠則 (翻訳), 佐藤 文明 (翻訳), 鈴木 健二 (翻訳), 竹中 友哉 (翻訳), 西山 智 (翻訳), 峰野 博史 (翻訳), 宮西 洋太郎 (翻訳)、ISBN: 4894714981、2009 年 1 月出版、電子書籍未出版) の P.584 のページ部分のごく一部の切り抜き部分を引用し、処理前と処理後の結果を示します。この 17 年前の名著を処理のサンプルとして用いる理由は、文字が特に小さく、普通に 300dpi で PDF スキャンすると結構読みづらくなるものを、本ソフトウェアで鮮明化すると読みやすくなることを示すためです。

1.3. 本ツールの目的 - 紙の書籍スキャン PDF を極めて読みやすくし、ストレスをゼロに近付けるとともに、高精細日本語 AI OCR を自動で実施する

筑波大学の学生は、特に勤勉であるため、各分野の勉強において、数百ページの、未だデジタル化されていない紙の専門書を、何冊も書籍部で買い込んでは、面白早虫のように読書し、勉学に励みます。しかし、数十冊の書籍をいつも持ち歩くのは困難ですし (手提げ袋が破れて、秋葉原行きの地下駅のプラットフォーム床に滑るように散乱する)、全文検索することもできませんので不便です。そこで、購入した書籍を、個人的に自炊 (裁断しスキャンして PDF 化すること) して自分専用に電子書籍化し、これを PC やタブレットで読んで、いつでも勉励するという手法が一般的です。

現代型学生は、書籍やその他の記事は、紙ではなく、デジタル版を、PC やタブレットで読むことに慣れています。そのうち、紙の書籍を見たことがない世代が登場するかも知れません。紙の書籍を見せると、「これはすごい、21 世紀の新発明である。PC やタブレットの画面と比較して、充電も不要で、消えることもなく、便利である。」という反応が得られることになると予想されます。

コンピュータ分野も、他の分野も、多くの重要かつ多様な知識は、古典的な紙の書籍にしか存在しません。絶版になってしまった書籍でしか手には入らない価値のある専門知識が数多くあります。さらには、新刊ですら、電子書籍がなかなか出版されない例が、未だ多くあります。現代型学生にとって、本来、紙でしか入手することができない書籍を、PDF 形式に自炊し、これを PC やタブレットで快適に読むことができるような環境を整備することは、デジタルとして出版・公開されている情報のみを摂取する場合と比較して、圧倒的に有利な結果をもたらします。

今や、自ら購入した書籍を裁断し、PDF にスキャンすることは、極めて容易です。安価なデバイスが多数市販されています。問題は、書籍をスキャンしただけけの PDF が、PC やタブレット上で、電子書籍と比較して、極めて読みづらい点にあります。

1.3.1. 自炊スキャン PDF における既存の課題

紙を自炊スキャンした PDF を読む際、ストレスにつながる問題は、以下のとおりです。

  1. 紙の書籍のスキャン結果は画質が低いこと
    紙の汚れ、裏写り、インクのにじみ、解像度の不足、あるいはスキャン時における JPEG のモアレノイズが気になります。近年の高解像度な iPad 等のタブレットや PC 画面で読む際に、どうしても、それらのノイズやギザギザの文字のピクセル輪郭が、意識に上り、集中力を阻害されます。これらは、一昔前のブラウン管モニタであればあまり気になりませんでした。しかし、最近の高精細液晶画面では、大いに気になるのです。また、誰でも、読書中に退屈な気分が生じた際に、無意味にズームして遊ぶなどいたしますが、その際に文字を拡大したときに、紙の汚れ、裏写り、インクのにじみ、解像度やモアレノイズなどが拡大されてしまい、勉強士気を低下させます。

    また、勉強を能率的に行なうためには、PDF に対する全文検索が有効です。そのためには、OCR を施す必要があります。しかし、上記のように画質が低い紙書籍スキャン PDF は、そのまま OCR をすると、OCR による誤字・脱字が多く発生し、うまく検索できなくなります。

  2. 微妙な傾きがあること、かつそれがページごとに異なること
    紙の書籍は、最初から、ある程度傾いています。さらに、スキャンによる傾きが加わります。勉強に際して、少しでも傾いていると、自分の思考まで傾いてしまう気分になってしまい、良くありません。

  3. 各ページのスキャンオフセットがずれてしまいページ送りする際にガタガタすること
    裁断し、スキャンをする際に、各ページのオフセットは互いに数ミリ程度ずれてしまいます。ページを、タブレットや PC の画面でパラパラと高速にめくると、デコボコ・ガタガタした感じになってしまいます。このズレは、大変に気になります。

  4. 余白自動除去によって各ページの余白部分がトリミングされた結果、さらにガタガタになること
    スキャンした書籍を、PC 画面やタブレットで、できるだけ広い面積を用いて読むために、余白自動検出・トリミング機能のあるソフトウェアや Web サービスを利用する手法があります。しかし、余白は各ページごとに異なります。すると、余白自動除去によって各ページの余白部分がトリミングされた結果、ガタガタになってしまいます。これは、1 つ前の問題と合せて解決される必要があります。

  5. 書籍のページ番号と PDF ビューアにおけるページ番号とがズレること
    ほとんどの書籍では、物理的な紙の 1 枚目は 1 ページ目ではありません。たいてい、最初に内表紙のような重厚で読者をありがたい気分にさせてくれるページがあり、次に、「まえがき」のような著者の畏れ多い数ページの説教があり、さらに数ページもの目次があり、その後に、ようやく、本文が始まります。その本文のところから「P.1」、「P.2」、・・・ とページが始まるのです (さらに厄介なことに、P.1 から始まらない場合もあります。さらに、途中でページ番号が飛んでしまう場合もあります)。

    ここで、重大な問題が発生します。目次からページに飛ぼうとしたり、あるいは、本文中に「P.123 を参照せよ」と書かれているからそのページに飛ぼうとしたりする際、PDF ビューア上のページ番号と、本文のページ番号がズレているので、毎回、十数ページ分先送りする必要があります。慣れてくるとこれは頭の中で出来るようになります (ズレのオフセット分、足し算をすればよろしい)。しかし、このズレのオフセットは、書籍によって異なるので、大変に面倒です。

    求められているのは、本文のページ番号と、PDF ビューア上のページ番号とが、確実に一致することです。そこで、特に勤勉な学生は、PDF ビューア上のページ番号を、PDF ファイルのメタデータ等を頑張っていじって、本の各ページ番号に合せようとします。これは過酷な作業です。

  6. 見開き表示する際に、左側ページと右側ページとが自動判別されないこと
    PC 画面は横長ですので、自炊書籍を 2 ページ見開き表示したくなります。タブレットでも、画面を横回転して、見開きで読みたい場合があります。しかし、この場合、左右が元の物理本と一致していることが重要になります。スキャン時の具合により、おおむね 1/2 の確率で、左右は一致します。一致しない場合は、PDF のメタデータをいじるか、あるいは、PDF ビューアの表示設定を変えるなどして、1 ページ目を単独で表示し、2・3 ページ目から見開き表示する、というような変更が必要です。これは毎回ストレスです。

  7. 縦書きの書籍において、ページ順序 右 → 左 にするフラグを立てる必要があること
    勤勉学生が読書する古典的な書籍は、未だに、縦書きになっているものが多くあります。縦書きの場合、ページ順序が 右 → 左 である旨のフラグを立てなければ、見開き読書をする際、あるいは、単独ページであってもタブレット上で指でページをめくる際に、順番が逆になり、頭がおかしくなりそうになります。

  8. 日本語 OCR において誤字・脱字が多く生じること。また、折角苦労して、物理/論理ページ番号や縦書きフラグ等を設定した PDF を、OCR ソフトにかけると、それらの苦労して作ったメタデータが全部消え、労力が水の泡になること
    PDF を OCR 処理し、全文検索したり、コピー・アンド・ペースト可能にしたりする場合、従来の OCR は、誤字・脱字がかなりあり、実用的とはいえませんでした。

    しかも、多くの PDF 対応の OCR ソフトウェアは、上記の物理/論理ページ番号や縦書きフラグ等を設定した PDF をかけると、一応、検索可能 PDF を作ってくれるのですが、元のこれらの苦労して作ったメタデータが全部消え、労力が水の泡になってしまいます。

    さらに、OCR 処理された結果を、フルテキストインデックス作成処理または AI 学習処理等のために、テキストデータに変換する際は、さらに一苦労します。たいていの場合、構造化されていない単なる文字データが出力されるだけです。構造をある程度反映した OCR 結果を、PDF だけでなく、HTML / Markdown / JSON 等で出力することが必要でしたが、これらは、既存の一般的なツールでは実現できないか、追加的な高度複雑なプログラミングが必要でした。

上記を統合的かつ自動的に解決することは、至難の業でした。

1.3.2. 本ソフトウェアの機能

本ソフトウェアは、PDF の変換ツールです。入力される自炊書籍 PDF ファイルに対して、さまざまな AI 技術、OCR 技術、自作の大変適当なヒューリティスティックな技術を用いて、上記 8 個の問題を解決します。

  1. 高画質化・鮮明化
    現代 (2026 年) の AI 技術では、紙の書籍から元の活字または DTP 組版に逆変換して完全にデジタル的な PDF (フォント埋め込み PDF あるいはベクトルデータ) を形成することは、未だ困難です。しかし、ビットマップ画像を、AI を用いて鮮明化することは、かなりの水準まで可能です。本ソフトウェアは、内部で RealEsrgan という画像鮮明化 AI エンジンと、これに関連して C# で自作したかなり行き当たりばったりのアルゴリズムを用いて、紙の書籍の PDF スキャンから、紙の汚れ、裏写り、インクにじみ、JPEG モアレノイズを除去するとともに、文字部分をかなり拡大してもギザギザが目立たないように高解像度化します。

    このことにより、人間が読む際の快適さが著しく向上するほか、既存の各種 OCR ソフトウェアで OCR し、全文検索可能な PDF を生成する際の OCR 精度がかなり向上します。

    サンブル 1 を示します (再掲。前掲の引用書籍 (「民法 I」 第 4 版))。

    サンブル 2 を示します (再掲。前掲の引用書籍 (「分散システム」 第 2 版))。

  2. 傾き補正
    元の紙の傾きや PDF スキャン時に生じた傾きを補正します。

  3. 各ページのオフセットのズレの補正
    書籍のすべての奇数ページ / 偶数ページに対して、ヒューリスティックな処理を行ない、原則として全ページに存在するはずのページ番号部分を基準点として、スキャン時のオフセットずれを逆算して補正します。

    この処理を行なうためには、ページ番号領域の正確な認識が必要です。書籍には、いろいろなページ番号表記 (ページ番号の周囲の飾り、ユニークなフォント等) があり、意外に大変です。

    たとえば、前掲の引用書籍 (「民法 I」 第 4 版) では、例えば、下図のように、「226」という黒いページ番号の右側に、「■-」という青色の模様のようなものがあり、さらに、「第」という漢字が続いています。間にスペースがありません。これが難易度が高い理由です。普通に二値化して OCR をし、スペースに頼ってページ番号検出をすると、この部分を含めてページ番号であると誤認識してしまい、その後の処理がうまくいきません。このような特別なケースでも、ページ番号部分をできるだけヒューリスティックに検出するようにしています。

    別の書籍 (下図引用元: 「民事訴訟法〔第 4 版〕 (LEGAL QUEST)」三木 浩一 (著), 笠井 正俊 (著), 垣内 秀介 (著), 菱田 雄郷 (著) ISBN 4641179565, P. 431) のように、単純に OCR しただけでは、ページ番号として認識されてしまう部分が出現する書籍も色々あることが分かりました。この場合、一体どれがページ番号なのかを判別する必要性があります。下図をプログラムが自動的に認識して、ページ番号が「431」である、ということを確定するのは結構大変です。単一のページごとに分析する場合、実は、正解を導出することは不能と思われます。しかし、すべての奇数/偶数ページを分析し、「同一箇所に現われる数字群」でかつ「それが物理 PDF 枚数目ごとにインクリメンタルに増加する」という特徴をみて、「この部分が各ページにおけるページ番号であるに違いない」、というように推定可能であると思い付きました。本プログラムでは、この手法も用いて、ページ番号部分自動検出を実装しています。

    他にも色々な専門書を研究したところ、ページ番号部分 + 章節表記のバリエーションは種々のものがあることが分かりました。何十種類もの書籍のページ番号部分でうまくページ番号検出 + オフセット補正できるように工夫しました。しかし、それでもうまくいかない書籍があるかも知れません。

    今のところ、まだうまくいっていない書籍のページ番号部分の例を以下に示します。
    (引用: 「モダン オペレーティング システム 原書 第 2 版」 P. 47, Andrew S.Tanenbaum (著), 水野 忠則 (翻訳))

  4. 余白部分の全体統一的なトリミング
    「各ページのオフセットのズレの補正」と合せて、余白部分のトリミングを行ないます。従来手法では、各ページ毎に余白を検出してトリミングしていました。しかし、余白はページ毎に異なるので、連続してページをめくるとデコボコになってしまうという問題がありました。

    そこで、本手法では、すべての奇数/偶数ページを対象にいったん余白と考えられる部分を検出し、それを総合的に分析するアルゴリズムを用いて、「その書籍において一般的に妥当な余白領域」を全奇数/偶数ページに対して算出します。そして、「各ページのオフセットのズレの補正」処理と合せて、余白トリミング処理を行ないます。この際、さらに、左ページ群と右ページ群のページ番号の縦位置ができるだけ完全同一となるように合せます (そうしなければ、パラパラとめくった際や、見開き表示する際に、左右のページ群でズレて表示されるためです)。

  5. 書籍のページ番号と PDF ビューアにおけるページ番号との一致
    前述の処理で自動検出した各ページのページ番号と、PDF ビューアにおけるページ番号とを一致させるようにしました。以下のスクリーンショットのように、たとえば「227 ページ」に飛びたいときには、PDF ビューアで「227」と入力するだけで済みます。これまでのように、毎回頭の中で PDF 物理ページ番号と書籍内論理ページ番号との差分を足し算する必要がなく、とても快適です。

    (処理結果の例: 前掲の引用書籍 (「民法 I」 第 4 版) P. 227。PDF ビューアのページ番号と書籍のページ番号が一致)

  6. 見開き表示用に左側ページと右側ページとを自動判別
    PDF を見開き表示する際に、いずれのページが左側/いずれのページが右側に表示されるべきかのフラグを、前述のページ番号自動検出の結果に基づき、PDF 内に埋め込むようにしました。これにより、これまでおおむね 1/2 の確率で PDF ビューアの設定を変更したりあるいは空白ページを P.1 の前に差し込んで調整したりするような作業が不要になります。

    (横書き書籍の例 処理結果の例 1: 前掲の引用書籍 (「民法 I」 第 4 版) P. 226 - P.227、本文部分はモザイク。奇数/偶数ページのページ番号の位置から、左側/右側判定を自動的に行なうことに成功。)

  7. 縦書きの書籍において、ページ順序 右 → 左 にするフラグを自動設定
    勤勉学生が毎朝読書する古典的な書籍は、未だに、縦書きになっているものが多くあります。縦書きであることを自動検出すると、ページ順序が 右 → 左 である旨のフラグを立てます。見開き読書をする際、あるいは、単独ページであってもタブレット上で指でページをめくる際に、縦書きとして正しい順番でスクロールすることができるようになります。これまでのように、めくる方向と読む方向が左右逆になっていて頭がおかしくなりそうになることがなくなります。

    (縦書き書籍の例 処理結果の例 2: 引用書籍「チューリングの大聖堂: コンピュータの創造とデジタル世界の到来」 P. 292 - 293, ジョージ・ダイソン (著), 吉田 三知世 (翻訳), ISBN: 4152093595, 2013 年 2 月出版, 電子書籍未出版)

  8. 高精細な日本語 OCR 処理を実施し、「文字埋め込み・検索可能 PDF」を生成。また、「Markdown」、「HTML」、「JSON」形式も合せて出力し、フルテキストインデックス作成や AI 分析処理等に利用可能に
    本ソフトウェアの v2.00 以降では、高精細な日本語 OCR 処理を実施し、「文字埋め込み・検索可能 PDF」を生成する機能を実装しています。これは、外部ソフトウェアである高精細な YomiToku エンジンを内部呼出しすることにより実現しています (デフォルトで無効となっていますが、ConvertPdf コマンドの /ocr:yes オプションで有効化可能です)。

    単に YomiToku OCR ソフトウェアを呼び出しているだけではありません。快適性のために、読書用に必要な PDF 内部メタデータ再適用も行なっています。 YomiToku OCR ソフトウェアを単純に呼び出すと、PDF に埋め込んだ前記のメタデータ (物理/論理ページ変換データなど) が消えてしまいます。本ツールは、YomiToku OCR ソフトウェアが生成する PDF に、再度、それらのメタデータを埋め込む処理を行ないます。これにより、上記で解説した快適な読書用 PDF で、かつ文字列が埋め込まれた検索可能 PDF を、自動出力することができます。

    【AI-OCR による文字埋め込み・検索可能 PDFの例】 処理結果の例 3: 引用書籍「民法判例百選 2 債権 第 7 版 (別冊ジュリスト No.224)」 (中田 裕康 (編集), 窪田 充見 (編集)) の P.80-81 の記事「No. 39 - 現金自動入手機による預金の払戻しと民法 478 条」(河上正二著)

    かなり複雑な見出し・段組み構造である日本語書籍の適例として、上記の書籍のページ 80-81 の処理結果を引用します (引用元は、現在も市販されている著作物であるため、処理の特性が分かる最小限度の内容のみ示します)。適切な順番でコピー・アンド・ペースト可能な検索可能 PDF が生成されていることが分かります。

    【AI-OCR 結果の HTML 形式の出力結果の例】 処理結果の例 4: 上記引用書籍

    本ソフトウェアでは、テキストファイル対応の全文検索ソフトウェアでの検索 (フルテキスト・インデックスの作成) や、AI の RAG または追加学習等の統計処理において便利な HTML 形式または Markdown 形式でも、自動的に出力されます。

    HTML 形式では、見出し、箇条書き、表などが、ある程度正確に再現されるため、AI 処理に活用できます。

    上記引用書籍の同一部分の処理結果の HTML ファイルの例を以下に示します。

    【AI-OCR 結果の Markdown 形式の出力結果の例】 処理結果の例 5: 引用書籍「民法 II 第 3 版: 債権各論」 (内田 貴 (著)) の P.2 部分

    文書と図が入っており、かつ、図の中に文字が入っている例として、引用書籍を AI-OCR 処理し、Markdown 形式で出力した結果を示します。

    Markdown 形式でも、、見出し、箇条書き、表などが、ある程度正確に再現されるため、AI 処理に活用できます。

2. 必要システム環境

本ソフトウェアは、ローカル PC 上で動作します。Windows 上で開発しましたが、C# で書かれており、原理的には、Linux や macOS 上でも動作すると思います (それらの環境では、若干書き換えが必要と思われます)。

2.1. OS・HW 環境 (OS, RAM, GPU)

  • OS: Windows 10 / 11 x64 版

  • RAM: メモリは、かなり食います。このプログラムは、手抜きのため、多数のページがメモリ上に展開される部分があります。変換しようとする元 PDF のページ数に応じて、数 GB ~数十 GB の空きメモリが必要になるかも知れません。

  • GPU: 内部で利用している RealEsrgan という画像鮮明化 AI が、GPU 処理を必要とします。CPU でも処理はできると思いますが、その場合、極めて長時間かかり、実用的ではありません。GPU は、NVIDIA の CUDA 対応の GeForce シリーズを推奨します。以下のインストール手順サンプルでは、pytorch のインストールに際して cu128 というバージョンの CUDA に対応したものをインストールするようにしています。私は CUDA に詳しくないので、他のバージョンでも動くかも知れません。あるいは、CUDA 以外の GPU 用ドライバでも動くかも知れません。

    GPU のメモリサイズは、8GB 以上が推奨されます。それより少ないと、うまく動かないか、ものすごく時間がかかるかも知れません。

2.2. 開発環境 (Visual Studio, Python 3, Git)

  • Visual Studio 2026 または Visual Studio 2022 を利用します。インストール時に、.NET によるデスクトップ開発をインストールし、かつ、オプションで、C# .net 6.0 (少し古い) のコンパイラとランタイムをインストール必要があります。Visual Studio 2026 の Community Edition でも動作します。
  • Python 3 系を利用します。以下の設定サンプルでは、Python 3.11.9 を使用していますが、おそらく、他のバージョンでも動作します。
  • git を利用します。以下の設定サンプルでは、git.exeC:\Program Files\Git\bin\git.exe としてインストールされていることを前提とします。

3. インストール手順書

3.1. このリポジトリのクローン

どこか適当な開発用ディレクトリ (ディリレクトリ名のフルパスには、スペースや全角文字列を含まないことを推奨) を作成し、そのディレクトリに移動したのちに、コマンドラインから以下のとおりこのリポジトリのクローンをします。

"C:\Program Files\Git\bin\git.exe" clone --recursive https://github.com/dnobori/DN_SuperBook_PDF_Converter.git

3.2. external_tools\external_tools\image_tools\ ディレクトリの準備

本プログラムが内部的に子プロセス等として呼び出す、第三者が配布しているプログラム等を、以下のとおりダウンロードし、external_tools\external_tools\image_tools\ というサブディレクトリに保存してください。以下のダウンロードする各プログラムは、各配布主体が配布するものであり、私が配布するものではありません。ダウンロードした各ファイルにマルウェア等か含まれないかどうかは、各自アンチウイルスソフトウェア等で慎重に確認してください。

3.2.1. exiftool-13.30_64 ディレクトリ

ExifTool の Version 13.30 x64 を入れます。このディレクトリの直下に、exiftool.exe というファイルが置かれた状態にしてください。exiftool_files\ サブディリクトリも、そのまま、exiftool.exe と同じディレクトリに (サブディレクトリの形で) コピーしてください。このソフトウェアはフリーソフトウェア (GPL ライセンス) なので、インターネット上からダウンロードすることが可能です。以下でも再配布しています。
https://filecenter.softether-upload.com/d/260118_003_73929/exiftool-13.30_64.zip

3.2.2. ImageMagick-portable-Q16-HDRI-x64 ディレクトリ

まず、ImageMagick の 7.1.x 系の portable-Q16-HDRI-x64 版 を入れます。このディレクトリの直下に、magick.exemogrify.exe などのファイル (他にも 20 個以上のファイルがあります。すべてコピーしてください) が置かれた状態にしてください。このソフトウェアはフリーソフトウェア (ImageMagick ライセンス) で、以下からダウンロードできます。
https://imagemagick.org/archive/binaries/

本ドキュメント作成時は、ImageMagick-7.1.2-12-portable-Q16-HDRI-x64.7z というファイル名で配布されています。しかし、バージョンアップによって、バージョンやファイルが変わるようです。

次に、ghostscript の 10.5.1 x64 版のいくつかの実行可能ファイルを、この ImageMagick-portable-Q16-HDRI-x64 ディレクトリに入れる必要があります。以下の直リンクにあるインストールから、Ghostscript をインストールすると、C:\Program Files\gs\gs10.05.1\bin\ というディレクトリに、gsdll64.dll, gsdll64.lib, gswin64.exe, gswin64c.exe という 4 個のバイナリファイルが保存されます。これらの 4 個のファイルを、すべて、ImageMagick-portable-Q16-HDRI-x64 ディレクトリにコピーします。
https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10051/gs10051w64.exe

3.2.3. pdfcpu ディレクトリ

pdfcpu の v0.11.0 x64 を入れます。このディレクトリの直下に、pdfcpu.exe というファイルが置かれた状態にしてください。このソフトウェアはフリーソフトウェア (Apache ライセンス) なので、インターネット上からダウンロードすることが可能です。以下に直リンクを示します。 https://github.com/pdfcpu/pdfcpu/releases/download/v0.11.0/pdfcpu_0.11.0_Windows_x86_64.zip

3.2.4. qpdf ディレクトリ

qpdf の v11.9.1 x64 (msvc64) を入れます。このディレクトリの直下に、bin\ というサブディレクトリがあり (つまり、qpdf\bin\) 、その下に、qpdf.exe のほか合計 12 個くらいの色々なファイルが置かれた状態にしてください。このソフトウェアはフリーソフトウェア (Apache ライセンス) なので、インターネット上からダウンロードすることが可能です。以下に直リンクを示します。
https://github.com/qpdf/qpdf/releases/download/v11.9.1/qpdf-11.9.1-msvc64.zip

3.2.5. RealEsrgan ディレクトリ

これは追加的手順が必要なので、後述します。

3.2.6. yomitoku ディレクトリ

これは追加的手順が必要なので、後述します。(追加の日本語高精細 AI-OCR 処理を行ない、検索可能 PDF / HTML / Markdown / JSON 形式を追加で出力する場合のみ)

3.2.7. TesseractOCR_Data ディレクトリ

OCR エンジンのモデルデータである、[tesseract-ocr / tessdata_best] の v4.1.0 のデータのうち、eng.traineddatajpn.traineddata の 2 つのファイルを入れます。このディレクトリの直下に、これらの 2 つのファイルが置かれた状態にしてください。このデータはフリーデータ (Apache ライセンス) なので、インターネット上からダウンロードすることが可能です。以下に直リンクを示します。
https://github.com/tesseract-ocr/tessdata_best/archive/4.1.0.zip

3.3. external_tools\external_tools\image_tools\RealEsrgan\ ディレクトリの準備

  1. Python 3.11.9 for Windows をインストールします。(他のバージョンでも良いかも知れません。)
    インストール後、%LOCALAPPDATA%\Programs\Python\Python311\python.exepython.exe が存在するという前提で、以下の解説をいたします。
  2. コマンドプロンプトを開きます。
  3. 以下を 1 つずつ実行します。意味をよく理解しながら、実行してください。環境によっては、追加的に補正作業が必要となる可能性があります。
    mkdir <このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\RealEsrgan\RealEsrgan_Repo\
    
    cd /d <このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\RealEsrgan\RealEsrgan_Repo\
    
    %LOCALAPPDATA%\Programs\Python\Python311\python.exe -m venv venv
    
    venv\Scripts\activate
    
    python -m pip install --upgrade pip
    
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128
    
    cd /d <このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\RealEsrgan\RealEsrgan_Repo\
    
    "C:\Program Files\Git\bin\git.exe" clone https://github.com/xinntao/Real-ESRGAN.git
    
    cd /d <このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\RealEsrgan\RealEsrgan_Repo\Real-ESRGAN\
    
    "C:\Program Files\Git\bin\git.exe" checkout a4abfb2979a7bbff3f69f58f58ae324608821e27
    
  4. https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth を、<このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\RealEsrgan\RealEsrgan_Repo\Real-ESRGAN\weights\ に、手動でダウンロードして、保存します。
  5. 以下を 1 つずつ実行します。意味をよく理解しながら、実行してください。環境によっては、追加的に補正作業が必要となる可能性があります。
    cd /d <このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\RealEsrgan\RealEsrgan_Repo\
    
    venv\Scripts\activate
    
    pip install -r Real-ESRGAN\requirements.txt
    
  6. 任意のテキストエディタで、<このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\RealEsrgan\RealEsrgan_Repo\venv\Lib\site-packages\basicsr\data\degradations.py を開きます。
    以下のとおり、インチキ書き換えをします。
    旧:
    from torchvision.transforms.functional_tensor import rgb_to_grayscale
    
    新:
    from torchvision.transforms.functional import rgb_to_grayscale
    
  7. 任意のテキストエディタで、<このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\RealEsrgan\RealEsrgan_Repo\Real-ESRGAN\realesrgan\version.py というファイル名の、内容が空のファイルを作成します。

3.4. external_tools\external_tools\image_tools\yomitoku\ ディレクトリの準備

追加の日本語高精細 AI-OCR 処理を行ない、検索可能 PDF / HTML / Markdown / JSON 形式を追加で出力する場合は、以下の方法により、日本語に特化した AI 文章画像解析エンジン (Document AI) YomiToku をローカルディレクトリに pip で取得します。

なお、YomiToku は、kotaro.kinoshita 氏が公開・配布されているソフトウェアです。無償でダウンロードでき、「非商用での個人利用・研究目的での利用」は「自由に行っていただけます」と記載されています。しかし、商用利用等にあたっては、ライセンスの購入が必要と記載されています。詳しくは、同ソフトウェアの [README.md] (https://github.com/kotaro-kinoshita/yomitoku/blob/cba0a134e0d2ad3bfdce163231b3cb91de07928e/README.md) をご参照ください。

  1. (上述の手順で、すでに Python 3.11.9 for Windows が、%LOCALAPPDATA%\Programs\Python\Python311\python.exepython.exe が存在するという前提で、以下の解説をいたします。)
    コマンドプロンプトを開きます。
  2. 以下を 1 つずつ実行します。意味をよく理解しながら、実行してください。環境によっては、追加的に補正作業が必要となる可能性があります。
    cd /d <このgitをダウンロードしたディレクトリ>\DN_SuperBook_PDF_Converter\external_tools\external_tools\image_tools\yomitoku\
    
    %LOCALAPPDATA%\Programs\Python\Python311\python.exe -m venv venv
    
    venv\Scripts\activate
    
    python -m pip install --upgrade pip
    
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128
    
    pip install "yomitoku==0.10.3"
    
    
    
    

4. 使用方法

4.1. ビルド

上記の手順でソースコードの取得と必要なファイル群の取得・配置が完了したら、Visual Studio 2022 / 2026 で、DN_SuperBook_PDF_Converter_VS2026.sln を開きます。

その後、「ビルド」機能で、プログラムをビルドします。

4.2. 起動

ビルドが完了したら、「デバッグなしで実行」 でプログラムを実行します。(デバッグありで実行すると、とても重くなることがあるので、注意してください。)

うまく起動すると、

SuperBookTools>

というコマンドプロンプトのようなものが表示されます。

4.3. 変換の実行

ここで、以下のように、

ConvertPdf

コマンドを入力します。ソースディレクトリと宛先ディレクトリを聞かれます。ソースディレクトリには、変換したい元の PDF ファイル (2 つ以上のファイルが入っていても OK。また、さらに深いサブディレクトリ構造になっていても OK) を指定します。すると、変換処理が行なわれ、結果として、宛先ディレクトリに、同一の相対パス (ファイル名) に、変換結果 PDF が保存されます。

なお、ConvertPdf コマンドには、引数を指定することができます。さらに、本プログラムのコマンドラインから ConvertPdf コマンドに引数を指定することも可能です。バッチファイル等から自動的に本プログラムを呼び出す際に便利です。詳しくは、「SuperBookTools>」プロンプト内で、

ConvertPdf --help

を呼び出してみてください。

3.5. 動作中の注意

変換処理は、PDF からの画像生成、AI 画像鮮明化 (RealEsrgan) や内部的ページ番号検出のための OCR 処理、オプションの YomiToku による高精度日本語 AI-OCR 処理に、かなりの時間 (1 冊の書籍あたり十数分 ~ 数十分) を要します。その速度は、CPU や GPU の性能により異なります。

うまく動作しているかどうか不安になる場合は、タスクマネージャで CPU や GPU が回っているかどうか確認すると良いと思います。ただし、Windows のデフォルト状態のタスクマネージャでは、GPU 負荷は、CUDA の負荷を表示しません。画面上で CUDA の負荷を表示しなければ、GPU を 100% 使っているのに、全然使っていないように見えてしまいます。

4. ライセンスおよび使用上の注意

4.1. ライセンス

本ソフトウェア (このリポジトリにある私が書いた C# ソースコード) は、AGPL (GNU AFFERO GENERAL PUBLIC LICENSE) バージョン 3として公開します。

本ソフトウェアの内部で呼び出しているライブラリ (nuget で参照しているものも含む)、サブモジュールまたは既存プログラムは、本ソフトウェアに含まれるものではありません。これらはユーザーが各自自分でダウンロードして使用するものです。それらのソフトウェアを利用される場合は、それらの各ソフトウェアの各ライセンス条件に従ってください。

本ソフトウェアで /ocr オプションを Yes にすることにより利用することができる 日本語に特化した AI 文章画像解析エンジン (Document AI) YomiToku は、kotaro.kinoshita 氏が公開・配布されているソフトウェアです。無償でダウンロードでき、「非商用での個人利用・研究目的での利用」は「自由に行っていただけます」と記載されています。しかし、商用利用等にあたっては、ライセンスの購入が必要と記載されています。詳しくは、同ソフトウェアの README.md をご参照ください。なお、YomiToku は本ソフトウェアの配布物には含まれておらず、上記の方法でユーザーが各自 pip install コマンドでダウンロードし、インストールする必要があります。本ソフトウェアは yomitoku コマンドを子プロセスとして呼び出します。

4.2. 使用上の注意

4.2.1. 無償・無保証のフリーソフト

  • 本ソフトウェアには、技術上の不具合がある可能性があります。また、本ソフトウェアや上記の手順書で参照している他者が公開・配布しているソフトウェア群には、脆弱性がある場合があり、また、それらの作者によって秘かにマルウェアが埋め込まれている可能性もゼロではありません。これらが原因となり、ユーザーに不利益が発生しても、本ソフトウェアの作者は責任を負いません。ソフトウェアまたは手順書を実行する前に、必ず、各自で安全性を検証していただいた上で (あるいは、仮に危険であっても影響が生じない十分に隔離された環境で) 実行していただくようお願いいたします。

  • 本ソフトウェアそのものが第三者のいかなる権利 (いかなるの国の特許権等) をも侵害していないことをユーザーに対して保証するものではありません。本ソフトウェアを事業で利用したり、派生物を配布されたりする場合は、自己責任でお願いいたします。

4.2.2. 個人利用を想定

  • 本ソフトウェアは、各種書籍を個人的に利用するためにスキャン・PDF 化 (自炊) された方が、それらの書籍をご自身が PC やタブレットで読みやすくするために自己利用することを目的としたソフトウェアです。第三者のために PDF 変換・調整を行なうような業務・事業目的で開発したものではありません。

4.2.3. スキャンし変換した書籍 PDF は、原則、個人的利用に限定

  • 市販の紙の書籍等をスキャンし、本ソフトウェアで PDF 変換をすると、デジタル書籍の商用品質に近いデータが生成されると思いますが、それは個人的に読書するためだけに使用してください。書籍の著作権者に無断で配布・販売 (電子出版等) されると、著作権の侵害となりますので、十分ご注意ください。

5. (参考) 著作権者不明等の場合の裁定制度 (古い書籍をデジタル化して電子出版するビジネスが可能)

  • 著作権者の許諾があれば、電子出版されていない書籍をスキャンして、電子出版することも可能です。しかし、実際には連絡がとれないなど、許諾を取得することが困難な場合があります。そこで、近年、著作権者不明等の場合の裁定制度 (文化庁) という大変画期的な制度が整備されており、古い本を電子出版したい場合に、著作権者と連絡が取れない場合は、代わりに文化庁長官の裁定を受け、通常の使用料額に相当する補償金を供託することにより、電子出版等をすることができるようになりました (そのお金は、事後に、著作権者が現われた際の支払いに充てられるようです)。
  • ところが、上記を行なう際に、どのようにして、古い書籍から電子データを作るかが、技術上の大問題でした。理想的には、文字データを抽出し、構造的データ (目次、章節など) を再構築して、電子書籍化するのが良いのですが (ファイルサイズは 1 冊あたり数 MB 程度になります)、さまざまな創作的なレイアウトや図表を、同一性を保持したまま、デジタル的に再現することは困難で、1 冊あたり何十万円も人件費コストがかかり、赤字になってしまい、実現可能性が低かったのです。
  • しかし、日本人が発明した光ファイバ製造法 (VAD 法) を用いた全地球的な高速なインターネット通信技術の高度化により、ブロードバンドが普及し、ここ数年で、誰でも、1 個の PDF ファイルあたり数百 MB のサイズであっても素早く PC やタブレットにダウンロードして読むことができるようになりました。そこで、本ツールのような手法を用いることで、単にスキャンした PDF を鮮明化・ページ番号付与することにより、比較的サイズの大きな PDF ファイルを、そのまま電子書籍として出版するビジネスも、今日では、十分に可能であると思われるのです。

6. お勧め PDF ビューアの耳より情報

6.1. iPhone / iPad / macOS 版 PDF ビューアの最高峰は「PDF Viewer by Nutrient」だと思われる

iPhone / iPad / macOS 上で、日本語の縦書き・横書きの色々な書籍を快適に読む際のツールとして、15 年間色々試してきて、一番良いと思うのは、「PDF Viewer by Nutrient」 です。

これは、iPad や iPhone や MacBook が複数台あるとき、どこまで読んだか / どこにブックマークをしたか等を記録・同期してくれます。また、大量のページがある書籍の読み込みも高速です。日本語の縦書き書籍も快適に読めます。

フリー版と有料版があるようですが、フリー版でも十分と思います。

6.2. Windows 版 PDF ビューアの最高峰は「Sumatra PDF」だと思われる (一部改造推奨)

iPhone / iPad 上で、日本語の縦書き・横書きの色々な書籍を快適に読む際のツールとして、15 年間色々試してきて、一番良いと思うのは、「Sumatra PDF」 です。

Windows 上の Chrome や Acrobat Reader は、大量のページがある書籍の読み込みやページめくりは、結構遅くなります。「Sumatra PDF」は、異様に高速です。

ただし、Sumatra PDF には、機能に少し不十分な点があり、自分でソースコードをいじって改造して使っています。この fork した GitHub リポジトリの dn_3.5.2_patch2 というブランチ がそれです。これでほぼ完璧な PDF 読書環境が整いました。

今後の課題は、iPhone / iPad / Android / Windows / macOS のすべてにおいて、PDF の現在位置やブックマークを自動同期できる、統合的な PDF ビューアの実現ですが、これには時間がかかると思います。それまでは上記の既存ツールを組み合わせるのが良さそうです。

7. 開発にあたっての AI コーディングの利用について

本ソフトウェアの開発では、一部で、ChatGPT o3 Pro を用いた AI コード生成を利用しています。プロンプトで指示をして AI に C# の関数を書かせるというものです。本ソフトウェアのソースコードには、その結果が含まれます。

8. 拡張開発されたい方へ

本ソフトウェアは、自分で使うために適当に自作していたもので、もともと公開を予定していませんでしたが、これを欲しいという奇特な方が出現したので、公開することにしたものです。したがって、プログラムは非常にいいかげんで、洗練されていないと思います。

もし、将来、本プログラムを拡張開発されたいという方が出てきた場合は、プルリクエストではなく、GitHub 上で自由に Fork をしていただき、Fork 先で独自のプログラムとして派生プログラムを開発・公開していただければ幸いです。
(プルリクエストだと、私がすべての寄贈プログラムのソースコードをチェックしなければならないが、その時間が確保困難なため)

そして、この README.md に、「派生ソフトウェア」というリンク集を追加するプルリクエストのみを送付いただければ幸いです。

このようにすれば、このページに辿り着いた方は、よりまともな派生ソフトウェアに行き着くことができます。

9. 最後に

われわれ日本人の隠された資産は、昔の人々が長年苦労して日本語表現で書き溜めてきた価値があるがデジタル化されていない (される見込みもない) 絶版書籍である。これらは、古書として、古本書店や Amazon マーケットプレイスなどで数百円で売られている。

これらを、いろいろと購入し、個人的にスキャンした上で、本ツールを用いて汚れをデジタル的に除去したクリーンな PDF を生成し、これを PC やタブレットでいつでも快適に個人的に読み (古書の匂いやざらつき、読みづらさを、デジタルによって、快適に解決することができる)、全文検索をし、あるいは AI 処理などで個人的に利用すれば、近年のデジタル書籍あるいは Web 上のジャンク偏向情報のみしか摂取しない場合と比較して、大きな人材育成上の価値が生じる。

あるいは、本ツールと同様の手法を用いることにより、著作権者不明等の場合の裁定制度 (文化庁) を活用し、紙でしか出版されていない書籍を、読みやすくページ番号や縦書き・横書きのメタデータを完備した電子書籍に変換し、インターネット上で PDF 形式で販売することも可能となる。このようにすれば、多数の勤勉読書家は、著作権者のための対価相当額の補償金を支払い、高精細な PDF 形式の古書を、自ら煩雑なスキャン作業を行なうことなく入手することができ、集団的に古の多様な知識を効率的に吸収することができるので、国富につながる大きな価値が生じる。

これにより、日本人は、米国や欧羅巴はもちろん近年力を付けつつある諸外国の人材と同等以上の競争力を、手に入れ、維持し、ふたたび、さまざまな領域で、世界貢献できるようになるのである。

糸冬了!!

About

DN_SuperBook_PDF_Converter - スキャン書籍 PDF をデジタル書籍並みに大変クリアに読みやすくする AI PDF 高品質化・各種調整ツール

Resources

License

Stars

Watchers

Forks

Packages

No packages published