雑記

【コピペ卒業】Kindle・電子書籍をPDF化&OCRするアプリを作りました(kindle_shot)

Kindle など電子書籍アプリの画面キャプチャと自炊PDFの取り込みから、トリミング・OCR・PDF/Markdown 変換までを1つのGUIにまとめた自作アプリ kindle_shot の機能と導入手順の記事です。

はじめに

私は以前、「Pythonで実装するKindleのPDF化」というシリーズを①スクリーンショット編、②トリミング編、③PDF変換編の3記事に分けて公開していました。ありがたいことにたくさんの方に読んでいただいて、感想やご質問もいただきました。

ただ、自分でも使い続けるうちに、3つのコードを別々に動かすのが面倒だなと思うようになりました。それから、「Kindle以外の電子書籍アプリでも使いたい」「OCRもかけてテキスト化したい」「自炊したPDFも同じツールで処理したい」と要望がどんどん増えてきて、結果的に 1つのGUIアプリにまとめ直しました

それが kindle_shot です。今回はこのアプリでできることと、インストールから使い方まで、長くなってしまいますが1本の記事にまとめました。前半は概要、後半は各タブの詳しい使い方とトラブルシューティングです。気になるところから読んでもらえると大丈夫です。

kindle_shotで何が変わったか

これまでのコピペOKシリーズと、新しい kindle_shot の違いをざっくりまとめるとこんな感じです。

項目 コピペOKシリーズ(旧) kindle_shot(新)
操作 3つのコードを順番に実行 1つのアプリで完結
対応アプリ Kindleのみ Kindle / 楽天Kobo / Google Playブックス / BOOK☆WALKER / DMMブックス / Kinoppy
自炊PDFの取り込み なし 既存PDFを画像化して同じパイプラインに流せる
トリミング 手動のみ 上下左右、自動検出ボタン付き
出力形式 画像PDFのみ 画像PDF / テキストPDF / 検索可能PDF / Markdown
OCR なし NDLOCR-Liteで日本語縦書き対応
章しおり なし 「第◯章」「Chapter N」を自動検出してPDFしおり化

正直、最初は「ちょっと手直ししよう」くらいのつもりだったのですが、結果的にかなり別物になりました。特に OCRをかけて検索可能PDFやMarkdownを出せる ようになったのが個人的には一番うれしいポイントです。 ノートアプリにに取り込んだ後で本文検索ができるようになりますし、出力したMarkdownはそのままClaudeやChatGPTに投げて要約してもらったり質問したりできます。

想定している使い方

私自身は、主に2つの用途で使っています。

  1. iPadで書き込みながら読みたい本(教科書・専門書)をPDF化する
  2. 本の内容を生成AIに読ませて、要約や質問に使う

①は以前のシリーズの延長線上の使い方ですね。②は最近よくやっているのですが、Markdownで出力できると本当に便利です。本1冊をまるごとClaudeに貼り付けて「この章の論点を整理して」とか聞けるので、勉強や仕事の調べ物の効率が一段上がりました。

具体的な手順はマニュアルパートのチュートリアルで紹介しているので、興味のある方はそちらも読んでみてください。

全体の流れ

kindle_shot には4つのタブがあります。

[1a. キャプチャ ]  ┐
                   ├→ 2. トリミング → 3. 変換(PDF / Markdown)
[1b. PDF読込   ]  ┘

入り口は2つ用意していて、

  • Kindle等のアプリから自動キャプチャしたい場合:「キャプチャ」タブ
  • 手元にすでにPDFがある場合(自炊スキャン・購入済PDFなど):「PDF読込」タブ

どちらを使っても、その後のトリミング・変換タブの流れは共通です。出力フォルダは次のタブに自動で引き継がれるので、何度も同じパスを入力する必要はありません。

ここまでが概要のお話です。ここから先は、各タブの機能や使い方をひとつずつ詳しく見ていきます。インストール方法もこちらで紹介しているので、実際に使ってみたい方は読み進めてみてください。


kindle_shotとは何か

一言で言うと

電子書籍をPDF化・OCRして、検索・注釈・AI入力に使えるようにするツール」 です。

電子書籍をPDF化するツールや、PDFをOCRするツールは世の中にたくさんあります。ただ、

  • Kindleの本をキャプチャするスクリプト
  • 余白をトリミングするツール
  • OCRをかけて検索可能PDFにするソフト
  • 結果をAIに食わせるための整形

これらが 全部バラバラ になっていて、一連の流れとして使おうとすると意外と面倒なんですよね。kindle_shot はこの流れを最初から最後まで1つのアプリにまとめました。

解決したい課題

冒頭で軽く触れた2つの用途について、もう少し詳しく書いておきます。

用途1: iPadで書き込みながら読みたい

教科書や専門書をKindleで買って、iPadのGoodNotesに取り込んで注釈しながら読みたい、という使い方です。 Kindle端末にもメモ機能はありますが、自由度は紙+手書きには敵わないかと思います。 今までは画像PDFしか作れなかったのですが、画像PDFのままだと本文検索ができないので、「あの用語どこに出てきたっけ」がわからないのが使いづらかったです。 kindle_shot検索可能PDF出力 を使えば、見た目は画像PDFのまま Ctrl+F で本文検索が効くようになります。(ただし、その文字があるページがわかるだけで、特定の文字がハイライトされるわけではありません)

用途2: 本の内容を生成AIに読ませたい

Kindleの本はDRMの関係で、テキストデータとしてAIに直接渡す手段が事実上ありません。 画像PDFをそのままClaudeやGeminiに投げることもできますが、トークンコストが3〜5倍かかってしまいます。kindle_shotMarkdownに変換 してしまえば、本1冊をそのままClaudeの長いコンテキストに貼り付けたり、ChatGPTのGPTsに食わせたり、NotebookLMのソースとして登録したりできます。 せっかく生成AIも進化して本1冊くらいなら余裕で渡せるようになっているので、色々試してみたいなと思っていました。

既存ツールとの違い

似たようなツールはネットを探すといくつかあるのですが、それぞれ次のような制約があります。

既存ツール 制約
AutoHotkey + Tesseract系の個人記事 プログラマ以外は使えない、後処理(段落整形)まで含まない
英語圏OCRツール(Tesseract, PaddleOCR単体) 日本語の縦書きが苦手
Adobe Acrobat OCR 有料サブスク
Kindle公式のハイライト連携 ハイライト箇所しか取り出せない

kindle_shot は「日本語 × 無料 × 本文全体 × AI入力可能なMD」の4点を同時に満たすところを狙っています。

できること(全機能ツアー)

メインの機能を一つずつみていきます。

キャプチャタブ

電子書籍アプリのページを自動でめくりながら連続スクリーンショットを撮ります。

主な機能はこんな感じです。

  • プロファイル選択: Kindle、楽天Kobo、Google Playブックス、BOOK☆WALKER、DMMブックス、Kinoppyをプリセットで用意しています
  • ウインドウタイトル:プロファイルを選択するとウインドウタイトルが自動で入ります。この文字列のあるウインドウを探す仕組みとなっているので、うまくいかないときはここを修正してみてください。理論上、ここを変更すればどんな電子書籍アプリでもキャプチャは可能です
  • ページめくり方向の切替(通常書籍/漫画) 漫画以外にも縦書きの本は左にします。

以下は特に触る必要はありませんが、キャプチャがうまくいかないときに試してみてください。 - 取り込み範囲の指定(全画面/手動)…既定は全画面取り込みで、左右の余白調整は後段のトリミングタブで行います - 領域プレビュー(緑線で範囲を確認) - 手動領域選択(マウスドラッグで左右範囲を指定) - カスタムプロファイル作成・保存

最終ページに到達すると(ページ変化がなくなると)自動的に停止します。 途中で止めたい場合は「停止」ボタンを押してください。

PDF読込タブ

自炊代行サービスで電子化してもらったPDFや、もともとPDFで購入した教科書などを画像フォルダに展開します。 「キャプチャタブの代わりとなる、もうひとつの入力源」という位置づけです。すでにPDFがある場合はこちらを使います。

PDF読込タブ。DPIと出力形式を選んで「画像に展開」を押すだけ。

下記が選択できます。 - DPI指定(150 / 200 / 300 / 400) - 出力形式(PNG / JPG)

トリミングタブ

撮影した画像、または読み込んだPDF画像から、不要な余白を一括カットします。

トリミングタブ。before/after プレビューを見ながら微調整できる。

  • 上下左右、ピクセル単位で指定
  • 自動検出ボタン: 先頭・中央・末尾を含む最大5ページから余白を推定
  • before/after プレビュー(複数ページを切り替えて確認可能)
  • デフォルト値の保存

自動検出はやや余裕を持たせた値を入れるようにしています。プレビューを見ながら微調整して、コンテンツに寄せていく使い方がおすすめです。 表紙だけ見ていると本文のページの余白が合わないことが多々あるので、次へを押しながら複数ページを確認するようにするとうまく使えます。

変換タブ

トリミング済みの画像を、4種類の形式に変換できます。

変換タブ。出力形式とOCRオプションが一覧で選べる。

形式 説明 OCR必要
画像PDF 画像をそのまま1つのPDFに結合 不要
テキストPDF OCRで抽出したテキストのみの軽量PDF 必要
検索可能PDF 画像 + 不可視OCRテキストのPDF 必要
Markdown OCRテキストを .md ファイルとして出力 必要
「章を自動検出してしおりを埋め込む」はあくまで機械的に章を付けるだけなので、
きれいに分かれている本であればうまくいきますが、あいまいな本だとあまりうまくいきません。
必要ないときはチェックを外しましょう。

OCRエンジンは NDLOCR-Lite(国立国会図書館製)を使っています。日本語の書籍・印刷物に強く、縦書きにも対応している軽量なエンジンです。GPU不要でCPUだけで動きます。 ただ、普通のスペックのPCだとかなり時間がかかるので、時間があるときにやりましょう。

ダウンロードと導入

ここが一番のハードルかと思いますが、なるべく簡単にしました。事前にPython(3.11〜3.13)をインストールしておけば、あとは setup.bat をダブルクリックするだけで、依存ライブラリやOCRエンジンの導入は自動で進みます。

必要な環境

  • Windows 10 または 11
  • ストレージ空き容量: 約500MB(OCRエンジン含む)
  • Python 3.11〜3.13(python.orgのフル版。後述の手順で先にインストールします)

インストール手順

簡単な方とそうでない方の両方を載せておきますが、ほとんどの方は「方法1: 簡単セットアップ」で大丈夫 だと思います。

事前準備(初回のみ): Pythonが入っていない場合は、先に python.org から Python 3.12系(対応範囲は3.11〜3.13)をインストールしてください。インストーラ最初の画面で 「Add python.exe to PATH」にチェック を入れるのがポイントです。 ※ 軽量な「embeddable版」のPythonは、GUIの土台になる tkinter を含まず起動できないため、必ず 通常のフル版インストーラ を使ってください。すでにPythonが入っている方はこの手順は不要です。

方法1: 簡単セットアップ(推奨)

  1. 配布されているZIPファイルを右クリック →「すべて展開」
  2. 展開されたフォルダの中の setup.bat をダブルクリック
  3. コマンドプロンプトが開いて自動でセットアップが進みます(5〜10分待つだけ)
  4. 「Setup complete!」と表示されたら、run.bat をダブルクリックして起動

setup.bat が裏で何をしているかというと、

  • システムにインストールされたPython(3.11〜3.13)を検出(対応バージョンが無ければ、導入手順を案内して停止します)
  • 仮想環境(kindle_env)を作成して依存ライブラリをインストール
  • OCRエンジン(NDLOCR-Lite)を git または PowerShell経由で自動取得・インストール

という流れを自動でやってくれます。依存ライブラリは仮想環境(kindle_env)の中だけに入るので、システムのPython環境を汚しません。 ここさえ乗り越えれば後は楽です。

方法2: 手動セットアップ(Python経験者向け)

すでにPython 3.11以上が入っていて、自分で環境を管理したい方はこちらを。

cd kindle_shot
python -m venv kindle_env
kindle_env\Scripts\activate
pip install -r requirements.txt
git clone https://github.com/ndl-lab/ndlocr-lite.git
pip install -r ndlocr-lite\requirements.txt

その後 python app.py で起動します。

初回起動の確認

run.bat を実行して、以下のような4タブのウィンドウが開けば成功です。

初回起動時の画面。タブが4つ並んでいれば成功。

変換タブを開いて、「OCRエンジン: NDLOCR-Lite」と表示されていれば、OCR系の機能も使えます。もし赤字で「NDLOCR-Lite が見つかりません」と出ていたら、後述の「よくあるトラブル」を参照してください。

使い方チュートリアル

具体的なシナリオを3つ用意しました。自分の用途に近いものから読んでみてください。

シナリオA: Kindle本を検索可能PDFにする

専門書をiPadで読みながら手書き注釈したい、というケースです。

  1. Kindle for PC を起動 して、PDF化したい本を開きます
  2. 表示形式を 「1ページ表示」 に変更します(見開きはNG。解像度が半減してOCR精度も落ちます)
  3. 最初のページを表示した状態にし、最前面に表示します(全画面表示にしておいた方が使いやすいです)
  4. kindle_shot を起動して、キャプチャタブ を開きます
  5. プロファイルで「kindle」を選択
  6. ページめくり方向は「→ 右(通常)」のまま(漫画や縦書きなら「← 左」)
  7. タイトルと保存先フォルダを指定して「キャプチャ開始」
  8. キャプチャ中はマウス・キーボードに触らずに待ちます
  9. 出力フォルダのパスが次のタブに自動で引き継がれるのでトリミングタブに移動します
  10. 「自動検出」ボタンを押して、プレビューで確認してみます。その後余白の上下左右の欄に値をいれて微調整します
  11. 「トリミング実行」を押して完了を待ちます。
  12. トリミングが完了したら「変換」タブに移動します
  13. 出力形式で「検索可能PDF」を選択
  14. OCR前処理は「有効化」「倍率1.5」「コントラスト強調オン」のままでOK
  15. 出力先とファイル名を入力して「変換実行」

OCRには本のページ数に応じて時間がかかります。300ページの本だとCPUのみで30分〜1時間くらいが目安です。終わったら、できあがったPDFをiPadに送ってGoodNotesで開いてみてください。 Ctrl+F(GoodNotesでは虫眼鏡アイコン)で本文検索が効くはずです。

シナリオB: 自炊PDFをMarkdown化してClaudeに読ませる

自炊代行サービスで電子化してもらったPDFをClaudeで読みたい、というケースです。

  1. kindle_shot を起動して、PDF読込タブ を開きます
  2. 自炊PDFを「参照」から選択
  3. DPIは200、形式はPNGでOK(OCR目的ならこれで十分)
  4. 「画像に展開」を実行
  5. 出力フォルダのパスが次のタブに自動で引き継がれるのでトリミングタブに移動します
  6. 「自動検出」ボタンを押して、プレビューで確認してみます。その後余白の上下左右の欄に値をいれて微調整します
  7. 変換タブ に切り替えて、出力形式は「Markdown」を選択
  8. 段落を自動整形」にチェックを入れる(OCRで混入する余分な改行を結合してくれます)
  9. 章自動検出も有効にしておく(PDFしおりではなくMarkdown見出しに変換されます)
  10. 「変換実行」

できあがった .md ファイルをClaudeにそのまま貼り付ければ、本1冊分の対話ができます。

(Claudeにファイルを添付して)
このPDFは○○の専門書のMarkdown版です。第3章の論証構造を、図解できるように整理してください。

長いコンテキストウインドウの本気を体験するには、いい入口になるかと思います。

キャプチャ機能の詳細

プロファイル一覧

プロファイル 対象アプリ 待機時間
kindle Kindle for PC 0.15秒
google_play Google Play ブックス 5.0秒
rakuten_kobo 楽天Kobo 0.5秒
bookwalker BOOK☆WALKER 1.0秒
dmm_books DMMブックス 0.5秒
kinoppy Kinoppy(紀伊國屋書店) 0.5秒
プリセットとしてはこれを用意しています。
取り込みはどのプロファイルもウィンドウ全体を撮る方式で統一しています(左右の余白はトリミングタブで調整します)。
アプリによってページをめくった際のロード時間が異なるので、待機時間を変更できるようにしています。

基本的にウインドウの名前を指定しているだけなのでどんなアプリでも大丈夫です。 もし、他のアプリでも使用したいという方がいたら、コメントなどで教えてください。

取り込み範囲(全画面 / 手動)

ウィンドウのどの範囲を撮るかの設定です。以前はアプリごとに左右の端を自動検出する方式も用意していましたが、誤検出で本文が欠けることがあったため、「全画面で取り込み → 余白はトリミングタブで調整」 に一本化しました。

方式 特徴 適した場面
full ウィンドウ全体をそのまま取り込む(既定) ほとんどの場合こちら
manual 「手動領域選択」で指定した左右範囲だけを取り込む UIなど余計な部分が大きく写り込む場合

手動領域選択

「手動領域選択」ボタンを押すと、画面全体が半透明になってドラッグで範囲を指定できます。自動検出がうまくいかない本ではこちらを使うと確実です。

カスタムプロファイル作成

「詳細設定」を開いてパラメータを調整した後、「複製して保存」で名前を付けると、独自プロファイルとして保存できます。次回以降はドロップダウンから選ぶだけで使えるようになります。

ビルトインにないアプリでも、ウィンドウタイトル・ページめくりキー・境界検出方式を設定すれば動かせるかと思います。

PDF読込機能の詳細

DPIの選び方

DPI 用途
150 軽量重視。ファイルサイズを抑えたいとき
200 OCR目的のおすすめ値。バランスが良い
300 印刷品質。OCR精度をギリギリまで上げたいとき
400 オーバースペック気味。極小文字の古い本で試す程度

PNG vs JPG

  • PNG: 無劣化、ファイルサイズ大きめ。OCR精度を最大にしたいなら
  • JPG: やや劣化、軽量。漫画など写真寄りのコンテンツに

迷ったらPNGで大丈夫です。

トリミング機能の詳細

自動検出の仕組み

入力フォルダから先頭・中央・末尾を含む最大5ページをサンプリングして、4隅のピクセルから背景色を推定し、各辺ごとに 最小マージン(=最も保守的な値)を採用します。さらに安全マージンを差し引いて、ギリギリを攻めすぎない値にしています。

「章タイトルだけのページ」や「図版があるページ」で過剰にクロップしないように倒した設計です。 プレビューで確認しながら値を増やしてコンテンツに寄せていく、という使い方を想定しています。

デフォルト値の保存

「デフォルトとして保存」ボタンを押すと、設定した値が config.json に書き込まれて、次回起動時に自動的に適用されます。同じ電子書籍アプリばかり使うなら一度決めれば再設定不要です。

変換機能の詳細

出力形式の比較

形式 OCR サイズ 検索 編集 おすすめ用途
画像PDF 不要 × × 漫画、画集、画像メインのコンテンツ
テキストPDF 必要 極小 テキスト主体の軽量保存
検索可能PDF 必要 × iPad+GoodNotes、勉強用途
Markdown 必要 生成AIへの入力、テキスト二次利用

OCR前処理(Lanczosアップスケール、コントラスト強調)

電子書籍ビューアのアンチエイリアス文字はOCRにとってノイズになりがちです。前処理として以下を挟むことで、本によっては誤認識率が体感で大きく下がります。

  • Lanczosアップスケール(1.5〜2倍): 文字エッジを太くしてOCRに認識させやすくする
  • コントラスト強調(autocontrast): 上下1%を切ってコントラストを最大化、地色が真っ白でない本でも効きやすい

倍率は1.5倍が推奨です。低解像度のキャプチャなら2.0倍にしてみてください。 処理時間は伸びますが、Kindleの本では明らかに精度が上がります。

置換辞書 replacements.json

本ごとの誤認識癖を機械的に潰すための辞書です。プロジェクトルートに置いた replacements.json を変換タブの「辞書を編集」ボタンで開けます。

{
  "_comment": "OCR誤認識の置換辞書。'literal' は単純な文字列置換、'regex' は正規表現置換。",
  "literal": {
    "゠": "ー",
    "—": "ー"
  },
  "regex": [
    {"_comment": "数字に挟まれた大文字 O は 0 の誤認識として扱う", "pattern": "(?<=\\d)O(?=\\d)", "replace": "0"},
    {"_comment": "数字に挟まれた l (小文字エル) は 1 の誤認識として扱う", "pattern": "(?<=\\d)l(?=\\d)", "replace": "1"}
  ]
}

literal は単純な文字列置換、regex は正規表現置換です。_ で始まるキーはコメント扱いで無視されます。本を読み進めていて「この本は『ー』が必ず『゠』に化けるな」と気付いたら、ここに1行足しておくだけで以降のOCRに自動適用されます。

章しおり自動検出のロジック

kindle_shot は以下の3段階で章を検出します。

  1. 強パターン:「第◯章」「第◯部」「Chapter N」「序章」「終章」「プロローグ」「あとがき」「謝辞」「解説」などの定型語
  2. 節パターン:「第◯節」「N.M」「§N.M」など
  3. ヒューリスティック: ページの最初の非除外行が短く(20文字以下)、句点で終わらない場合に章タイトル候補とする

ページ番号(純粋な数字行)や、明らかに本文の続き(句点で終わる行)は自動的に除外しています。セリフの途中で始まる行は章タイトル扱いしないようにも調整してあります。

検出結果はPDF出力時にしおり(アウトライン)として埋め込まれ、Markdown出力時には見出し(章は #、節は ##)として挿入されます。

Markdown併記モード(embed_images)

変換タブで「ページ画像を併記」にチェックを入れると、各ページの画像を <basename>_pages/ フォルダにコピーして、Markdown本文の先頭に ![p.001](path) 形式で併記します。

<!-- page: 001.png -->

![p.001](mybook_pages/001.png)

ここに001ページのOCR結果が入ります...

RAGや生成AIに渡したときに「該当ページの図を見せて」と言われたら画像を返せる、という用途です。NotebookLMはテキスト中心なのでオフ推奨、Claude / ChatGPT / Gemini で図表を参照したいならオンにすると便利です。

よくあるトラブルとQ&A

セットアップ系

Q. setup.bat を実行すると [ERROR] Failed to install dependencies で止まる

A. Pythonのバージョンが対応範囲外(3.11〜3.13)の可能性が高いです。特に新しすぎるPython(3.14以降)だと、依存ライブラリの対応版(wheel)が無くインストールに失敗します。python.org からPython 3.12系を入れ直して(既存のPythonと共存できます)、最新のZIPで再実行してみてください。

Q. setup.bat のウィンドウが一瞬で消える / . was unexpected at this time. と出る

A. 古いZIPに含まれていた setup.bat 側の不具合です(Windowsバッチのカッコの扱いのミス)。最新のZIPを再ダウンロードすれば修正済みです。

Q. アプリの画面(GUI)が起動しない

A. 「embeddable版」のPythonを使っていると、GUIの土台になる tkinter が含まれず起動できません。python.orgの フル版インストーラ でPython 3.11〜3.13を入れてから setup.bat を実行してください。

キャプチャ系

Q. キャプチャが最初の1ページで止まる

A. 電子書籍アプリが前面に表示されているか、最小化されていないかを確認してみてください。それでもダメなら「詳細設定」の 待機時間を長くしてみてください。短すぎるとページ描画が間に合わず「変化なし=終了」と誤判定されます。

Q. ウィンドウが見つからないと表示される

A. 電子書籍アプリが起動しているか、ウィンドウが最小化されていないかを確認してください。「詳細設定」のウィンドウタイトルキーワードが正しいかも確認してみてください。大文字小文字は区別しないので、kindleKindle for PC にマッチします。

Q. 境界検出がうまくいかない

A. 「手動領域選択」ボタンでマウスドラッグで範囲を指定してください。あとは電子書籍アプリを 全画面表示 にすると、UIの干渉が減って検出精度が上がります。

Q. 漫画や縦書きのページめくり方向はどうすれば

A. キャプチャタブの「ページめくり方向」で 「← 左(漫画)」 を選択してください。一般的な右綴じ書籍ならこれで動きます。

OCR系

Q. OCRエンジンが利用不可と表示される

A. NDLOCR-Liteの取得に失敗している可能性があります。ndlocr-lite フォルダがプロジェクト直下にあるか確認してください。もし無ければ、コマンドプロンプトで以下を実行すれば手動で導入できます。

git clone https://github.com/ndl-lab/ndlocr-lite.git
kindle_env\Scripts\activate
pip install -r ndlocr-lite\requirements.txt

Q. OCR精度が低い

A. まず変換タブの 「OCR前処理」を有効化 して、倍率を 1.5倍 にしてみてください。低解像度のキャプチャなら 2.0倍 が効きます。それでもダメな場合は、本ごとの誤認識癖を replacements.json に登録するのが確実です。

Q. OCRが遅い

A. NDLOCR-LiteはCPUで動作するため、300ページの本で30分〜1時間が目安です。並列化やGPU対応はしていません。Markdown出力の場合は、OCR完了後に整形処理が走るので少し追加の待ち時間があります。

Q. 画像PDFは速いのにテキストPDF/検索可能PDF/Markdownが遅い

A. これは仕様です。OCR処理が支配項なので、形式に関係なくOCRが必要な出力は同程度の時間がかかります。

出力系

Q. PDFの容量が大きい

A. キャプチャ時のDPIを下げる(PDF読込タブなら200以下に)か、トリミングで余白をしっかり削るのが効きます。あるいは画像PDFをやめてテキストPDFにすると劇的に小さくなります(ただし見た目は変わります)。

Q. しおりが思ったところに入らない

A. 章検出は機械的なヒューリスティックなので、本によっては誤検出することがあります。 原則として「第◯章」「Chapter N」のような定型語があれば確実に検出します。短い文がページ先頭にある場合(章タイトル風だがそうでない場合)に過剰検出することがあるので、その場合は変換タブの「章を自動検出してしおりを埋め込む」をオフにしてみてください。

Q. Markdownの段落整形をオフにしたい

A. 変換タブの「段落を自動整形」のチェックを外すだけです。OCRが出力した改行をそのまま保持します。

その他

Q. Macでも動きますか

A. 現状はWindows専用 です。win32_utils.py でWindows APIを直接叩いている箇所があるので、Macでは動きません。Mac対応は技術的には可能ですが、開発者がMacを持っていないので現状は手をつけていません。

Q. 商用利用できますか

A. ツール自体はMITライセンスなので商用利用も可能です。ただし、変換した電子書籍やPDFの著作権は別問題です。後述の「ライセンスと注意事項」をご確認ください。

Q. アップデートはどうなりますか

A. 不定期で更新します。設定ファイル(config.json)と置換辞書(replacements.json)は新バージョンに上書きコピーすれば引き継げます。

ライセンスと注意事項

MITライセンス

kindle_shot 本体は MITライセンス で配布しています。商用・非商用問わず自由に使っていただいて大丈夫です。再配布や改変も可能です。ただし、無保証で提供されるソフトウェアなので、何かトラブルがあっても責任は負えません。

著作権・私的利用の範囲

このツールで電子書籍をPDF化・Markdown化する行為については、個人の私的利用の範囲内 でお使いください。具体的には、

  • OK: 自分が購入したKindle本を、自分のiPadで読むためにPDF化する
  • OK: 自分が買った専門書を、自分の学習のためにAIで要約する
  • NG: 変換したPDFやMarkdownを他人に配布する
  • NG: 変換したものをインターネット上で公開する

著作権法的にもグレーな部分があるので、変換物の取り扱いには十分ご注意ください。当たり前ですが、DRMが施されたコンテンツの解除や、配布目的での変換にこのツールを使うのは避けてください。

動作環境

  • Windows 10 または 11
  • Python 3.11〜3.13(python.orgのフル版を事前にインストール)
  • ストレージ: 約500MB(OCRエンジン込み)
  • メモリ: 4GB以上推奨

同梱される外部ライブラリ

主なものだけ挙げておきます。詳細は requirements.txt を参照してください。

  • CustomTkinter(GUI)
  • OpenCV / Pillow / NumPy(画像処理)
  • pyautogui(キー送信)
  • ReportLab / pypdfium2(PDF生成・読込)
  • NDLOCR-Lite(OCR、別途取得)

NDLOCR-Liteは国立国会図書館製のOCRエンジンで、独自のライセンスで提供されています。詳細は GitHubリポジトリ をご確認ください。

更新履歴

v0.1.1(2026-06-06)

公開後、読者の方からセットアップに関するご報告をいくつかいただき、まとめて修正しました。コメントで原因の切り分けまでしてくださった皆さん、本当にありがとうございました。

セットアップまわりの修正(重要)

  • Pythonのバージョン対応を見直しました。 依存ライブラリを特定バージョンに固定している関係で、新しすぎる/古すぎるPython(例: 3.14以降)では対応するwheelが無く Failed to install dependencies で止まることがありました。setup.bat が対応バージョン(3.11〜3.13)を検査するようにしました。
  • 「Pythonが無くても動く(embeddable Python自動ダウンロード)」を取りやめました。 embeddable版のPythonには tkinter(GUIの土台)が含まれず、アプリの画面が起動できないことが分かったためです。今は python.orgのフル版Python 3.11〜3.13を事前にインストールしていただく 前提に変更し、入っていない場合は導入手順を案内するようにしました(本文の導入手順も合わせて更新しています)。
  • setup.bat が一瞬で閉じてしまう不具合を修正しました。 Windowsバッチ特有の書き方(カッコの扱い)にミスがあり、. was unexpected at this time. と出て途中で止まっていました。Pythonのバージョンに関係なく出る、こちらの不具合でした。

その他のバグ修正

  • 設定の読み込みでデフォルト設定が実行中に壊れることがある不具合を修正
  • キャプチャ時のウィンドウタイトル入力をキャンセルするとエラーになる不具合を修正
  • PDF生成時に画像ファイルが確実に閉じられない不具合を修正
  • 終了時の設定保存でエラーが出るとウィンドウが閉じないことがある不具合を修正
  • プロファイルで設定した全画面待機時間が反映されていなかった不具合を修正

すでにダウンロード済みの方は、お手数ですが最新のZIPを再ダウンロードしてください。

v0.1.0(2026-05-03) — 初版

旧コピペOKシリーズ(Kindle PDF化①②③)を1つのGUIアプリに統合し、以下の機能を実装しました。

  • キャプチャ: 6種のビルトインプロファイル、境界検出3方式、領域プレビュー、手動領域選択、カスタムプロファイル
  • PDF読込: 外部PDFの画像化(DPI / PNG・JPG切替)
  • トリミング: 4辺マージン指定、自動検出、before/afterプレビュー
  • 変換: 4種出力形式、NDLOCR-Lite統合、OCR前処理、置換辞書、章自動検出+PDFしおり埋め込み、段落自動整形、画像併記モード
  • その他: CustomTkinterによるモダンUI、embeddable Pythonによる依存ゼロ配布、setup.bat 一発でNDLOCR-Liteも自動取得

関連記事

旧シリーズの記事もそのまま残してあります。Pythonコードを自分で書き換えてカスタマイズしたい方は、こちらの3記事が参考になるかと思います。

自分で本を電子化することに興味がある方は、自炊代行サービスのレビュー記事もどうぞ。

まとめ

いかがでしたか。今回は、旧コピペOKシリーズの内容を1つのGUIアプリに統合した kindle_shot を紹介しました。

ざっくり振り返ると、

  1. 3つのコードを1つのアプリに統合して、ダブルクリックだけで起動できるようにしました
  2. Kindle以外の電子書籍アプリや自炊PDFの取り込みにも対応しました
  3. OCRで検索可能PDFやMarkdownを出力できるようにして、生成AIに本を読ませる用途にも使えるようにしました

旧記事のコードもまだ動くので、Pythonに慣れていてカスタマイズしたい方はそちらをそのまま使っていただいて大丈夫です。一方で、「とにかく使えればいい」という方はこの新アプリの方が断然楽かと思います。

このアプリは個人の学習目的での使用を想定しています。当たり前ですが、PDF化したものの著作権にはお気をつけください。

この記事が誰かの役に立てばうれしいです。