BookTranslator
BookTranslator

CalibreでEPUBを翻訳する方法:プラグインの設定、出力モード、ファイルの確認

Calibreはサードパーティ製のEbook Translatorプラグインを通じてEPUBを翻訳します。設定、エンジンと出力の選択、v2.4.2がマークアップに与える影響、そして結果の確認方法について説明します。

BookTranslator

BookTranslator Team

23 min read

Calibreは単体では本を翻訳しません。CalibreでEPUBを翻訳するには、Calibreのプラグインインデックスに掲載されているbookfere製のサードパーティプラグインEbook Translatorを使用します。環境設定 → プラグイン → 新しいプラグインを取得からインストールし、翻訳エンジンを選び、翻訳のみか原文と並べるかを選択して、DRMフリーのEPUBで実行します。Calibreライブラリに新しいEPUBが追加されます。

設定はすぐに終わる部分です。多くのガイドが省略しているのは、その過程でプラグインが本に対して何を行うかです。現行リリース(v2.4.2)のソースコードを読んで確認したところ、選ぶエンジンよりも重要なデフォルト設定が3つあります。

  1. デフォルトの出力はバイリンガルです。 位置設定を変更しない限り、翻訳された各段落は原文の_下_に配置されます。
  2. 翻訳テキストではインライン書式が平坦化されます。 段落内のイタリック、太字、リンクは翻訳に引き継がれません。画像、改行、上付き文字など、固定されたタグのリストのみが保護され、元に戻されます。
  3. 実行のたびにCalibreの変換が行われます。 EPUBからEPUBへの変換であっても、プラグインは本をCalibreの変換パイプラインに渡し、出力ファイルが再構築されます。

だからといって、このプラグインが悪い選択肢というわけではありません。無料でオープンソース(GPL-3.0)であり、非常に設定可能です。ただし、結果を読んだり共有したりする前に、何を確認すべきかを知っておく必要があります。

方法に関する注記:このガイドは、プラグインのv2.4.2のソースコード、公式ドキュメント、およびCalibreのマニュアルに基づいています。この記事のために時間を計った翻訳を実行していないため、速度、翻訳品質、どのエンジンが最良の結果をもたらすかについては主張しません。

始める前に必要なもの

要件詳細
Calibreバージョン5.0.0以降。Calibreプラグインインデックスでv2.4.2に記載されている最小要件で、リリース日は2026年8月7日と表示されています。
DRMフリーのEPUBプラグインはCalibreライブラリ内の書籍ファイルに対して動作します。DRMでロックされたストア購入品は翻訳できません。まずファイルにDRMがないか確認してください。
翻訳エンジン一部のエンジンはアカウントなしで動作します(Google、DeepL、Microsoft Edgeの無料エンドポイント)。その他はAPIキーが必要で、プロバイダーから別途請求されます。
確認の時間出力を読んで確認する時間を計画してください。プラグインは段落ごとに翻訳します。これはレビューのステップではありません。

プラグインは、MOBIやAZW3など、Calibreが読み取れる他の形式も受け付けます。いずれにしても本はCalibreの変換を経由するため、クリーンなEPUBから始めるのが最も予測可能な出力を得られます。

Ebook Translatorプラグインをインストールする

プラグインのドキュメントには、インストール方法が2つ記載されています。

  1. Calibre内から(推奨): 環境設定 → プラグイン → 新しいプラグインを取得を開き、_Ebook Translator_を検索してインストールをクリックし、Calibreを再起動します。
  2. ファイルから: プラグインのホームページからZIPをダウンロードし、環境設定 → プラグイン → ファイルからプラグインを読み込む を使用して再起動します。

プラグインがツールバーに表示されない場合は、環境設定 → ツールバーとメニュー → メインツールバー で追加してください。

Calibreはプラグインの作者をbookfere.comとして表示します。Calibreのチームはこれを保守していません。問題はCalibreではなく、プラグインのGitHubリポジトリに報告してください。

バッチモードまたはアドバンストモード

プラグインには翻訳を実行する2つの方法があります:

  • バッチモード: 1冊以上の本を選択し、対象言語と出力形式を設定して、翻訳 をクリックします。ジョブはCalibreのジョブキューで実行されます。一度だけ読む予定の本全体の初稿に使用します。
  • アドバンストモード: 1冊の本の段落をテーブルに抽出し、すべてまたは選択したものだけを翻訳し、任意の翻訳を手動で編集してから、出力 をクリックします。本が重要な場合、たとえば数章を再翻訳する必要がある場合や名前を修正する必要がある場合に使用します。EPUBが書き出される前に段落を修正できるからです。

いずれにせよ翻訳をレビューするなら、アドバンストモードではプラグイン内で修正できます。バッチモードでは、後でCalibreのエディタで修正することになります。

翻訳エンジンを選択する

無料のGoogleエンジンがデフォルトです。バージョン2.4.2では以下のエンジンが提供されています(名前はプラグインでの表示どおり):

エンジングループエンジン必要なもの
無料、キー不要Google(無料)3種類、DeepL(無料)、Microsoft Edge(無料)なし。制限はサービスによって設定され、変更される可能性があります
機械翻訳APIGoogle(Basic)、Google(Basic)ADC、Google(Advanced)ADC、DeepL、DeepL(Pro)、Youdao、BaiduアカウントとAPIキー、またはADCオプション用のGoogle Cloud認証情報。プロバイダーによる課金
LLMChatGPT(OpenAI)、ChatGPT(Azure)、Gemini、Claude(Anthropic)、DeepSeek(Chat)APIキー。プロバイダーによるトークン単位の課金
カスタム設定した任意のHTTPエンドポイント独自のエンドポイントとレスポンス解析

長編書に影響するデフォルト設定:

  • リクエスト間のインターバルはエンジンによって異なります。v2.4.2のソースでは、ChatGPT(OpenAIとAzure)は20秒、Claudeは12秒、GeminiとDeepL(無料)は1秒、その他ほとんどは0です。サービスがリクエストを拒否し始めた場合は、この値を上げることをドキュメントは推奨しています。
  • 試行回数は3で、10回連続エラー後に実行が中止されます。自動停止を無効にするには、中止回数を0に設定してください。
  • タイムアウトもエンジンによって異なります。ChatGPTとDeepSeekは60秒、ClaudeとGeminiは30秒、その他は10秒です。
  • 翻訳をマージはオフです。オンにすると、プラグインは最大1,800文字のバッチで段落を送信します。バッチはLLMにリクエストごとにより多くの周辺コンテキストを与えますが、1つの悪いレスポンスが一度に複数の段落に影響します。
  • 用語集はオフです。オンにすると、プレーンテキストファイルを読み込みます。用語とその翻訳は2行に、翻訳しない用語は1行に書き、エントリは空行で区切ります。

プラグインは無料ですが、翻訳が常に無料とは限りません。300ページの小説を有料APIに送信すると、他のAPI使用と同様に課金されます。ChatGPT、Claude、翻訳用DeepSeekのガイドでは、各モデルが長文で間違えやすい点を説明しています。

翻訳のみかバイリンガル出力かを選択

翻訳位置設定が本の形を決定します:

設定結果適している用途
原文の下(デフォルト)原文の段落、その後に翻訳語学学習者とスポットチェック
原文の上翻訳が先、その後に原文原文を近くに置きながら自分の言語で読む
原文の左/右(ベータ版と表示)各ペアがギャップ列を持つテーブル行になるワイドスクリーンのみ
原文なし翻訳が原文を置き換える翻訳書を読む

単純に読める本が欲しい場合は、開始前に位置を原文なしに変更してください。デフォルトでは対訳書が生成されます。

左右のオプションには注意が必要です。ソースでは、各ペアは原文、間隔、翻訳の3つのセルを持つテーブル行として再構築されます。デフォルトの10%の間隔では、テキスト列はそれぞれ45%の幅になります。スマートフォンや6インチの電子リーダーでは、これは2つの狭いテキストの帯になります。私たちの対訳EPUBガイドでは、小さな画面でも耐えられる対訳レイアウトを比較しています。

プラグインがEPUB内で変更するもの

これは一般的なチュートリアルが省略している部分です。この表は、v2.4.2が各コンテンツの種類に対して何を行うかを、ソースコード(タグv2.4.2のlib/element.pyとlib/conversion.py)に基づいてまとめたものです。

EPUB内のコンテンツv2.4.2の動作確認すべき点
段落、見出し、引用ブロック単位として抽出および翻訳される章の始めと終わりに欠落がないこと
<pre> および <code> ブロック翻訳されない(デフォルトで無視される)コードサンプルはソース言語のまま残る。通常はこれが正しい
段落内のイタリック、太字、<span>、リンクテキストは翻訳されるが、タグは翻訳から削除される翻訳された段落内の強調、イタリックのタイトル、本文中の相互参照
画像、<br>、<hr>、<sub>、<sup>、<abbr>、<math>、<svg>、およびその他いくつか翻訳前に{{id_00000}}などのプレースホルダーに置き換えられ、その後元に戻されるエンジンがプレースホルダーを変更した場合、{{id_…}}テキストが残ったり画像が欠落したりする
上付き文字を囲むリンクとして書かれた脚注マーカー1つの保護された単位としてまとめて保持される注釈リンクは依然として注釈にジャンプする
上付き文字なしのリンクとして書かれた脚注マーカーリンクは他のインラインリンクと同様に平坦化されますリンクしなくなった注番号
ルビ注釈(<rt>、<rp>)翻訳対象のテキストから削除日本語や中国語のソースにおけるふりがなやピンイン
数字と句読点のみの段落スキップページ番号と区切り記号はそのまま残されます
目次エントリ翻訳済みリーダーのナビゲーションメニューにある章タイトル
タイトル、著者、その他のメタデータメタデータ翻訳を有効にした場合のみ翻訳されますライブラリのエントリと本の表示タイトル

これらの詳細のうち2つが、最も目立つ損傷を引き起こします。

斜体とリンクが消える理由。 各段落について、プラグインは段落のプレーンテキストから翻訳するテキストを構築します。保護リストにあるタグだけがプレースホルダーに置き換えられます。<em> や <a> は保護も無視もされないため、その単語は翻訳され、マークアップは失われます。バイリンガルモードでは元の段落は書式を保持するため、問題は翻訳行にのみ現れます。ターゲットのみモードでは書式が失われます。Reserve Element でセレクタを追加できますが、要素を予約すると 翻訳されない ままになります。これは残したい外国語のフレーズや書名には便利ですが、翻訳したい強調には不適切です。

脚注が壊れる理由。 出版社は脚注参照をさまざまな方法でマークします。プラグインは上付き文字のみを包むリンク(<a href="#n1"><sup>1</sup></a>)を特別扱いし、そのリンクをそのまま保持します。<a href="#n1" class="noteref">1</a> と書かれた参照には上付き文字がないため、番号は残りますがリンクは残らない可能性があります。ノンフィクションのターゲットのみ翻訳を信頼する前に、注を確認してください。日本語や中国語の書籍については、ふりがなを失うことが許容できるか判断する前に、EPUBのルビ注釈を翻訳する方法をご覧ください。

翻訳された要素には、ターゲット言語の lang 属性と dir 属性も付与され、電子リーダーがフォントや右から左へのレイアウトを選択するのに役立ちます。バイリンガルモードでは、翻訳は元の要素の id をコピーしないため、既存のアンカーは依然として元の段落を指します。

最後に、Calibreの変換マニュアルでは、変換の仕組みが説明されています。入力はXHTMLに変換され、変換処理が行われ、出力プラグインによって書き出されます。その過程で、Calibreの変換によってメタデータと目次が再生成されることがあります。プラグインはそれらの変換の後、出力プラグインがファイルを書き出す直前に翻訳します。したがって、翻訳されたEPUBは再構築された書籍であり、元のファイルに新しいテキストを加えたものではありません。Calibreのマニュアルは、その変換システムが「本格的な電子書籍エディタの代わりにはならない」と述べています。

翻訳されたEPUBを5分で確認する

最初の章だけで結果を判断しないでください。元のファイルと翻訳されたファイルの間で構造比較を実行してください。EPUBはZIPアーカイブなので、標準のコマンドラインツールで各側のマークアップを数えることができます:

mkdir src out
unzip -q original.epub -d src
unzip -q translated.epub -d out
for tag in '<em' '<i[ >]' '<strong' '<a ' '<sup' '<img' '<rt'; do
  s=$(grep -rhoE "$tag" src --include='*htm*' | wc -l)
  o=$(grep -rhoE "$tag" out --include='*htm*' | wc -l)
  printf '%-10s source=%-6s output=%s\n' "$tag" "$s" "$o"
done
grep -rho '{{id_[0-9]*}}' out | head

結果の読み方:

  • ターゲットのみの出力で、ソースよりも <em>、<i>、または <a タグがはるかに少ない場合は、強調やリンクが平坦化されたことを意味します。これは上記の動作から予想されることです。その書籍がそれらなしで成り立つかどうかを判断してください。
  • ターゲットのみの出力で <img タグが少ない場合は、画像プレースホルダーが失われたことを意味します。バイリンガル出力では画像が2回表示されることがあるため、代わりにプレースホルダー検索に頼ってください。章を見つけて、アドバンストモードまたはCalibreのエディタで修正してください。
  • {{id_…}} というテキストは、エンジンがプレースホルダーを変更したことを意味するため、保護された要素は復元されていません。
  • バイリンガル出力は元の段落が保持されるため、少なくともソースと同じ数のタグが必要です。

<em パターンは <embed にも一致します。書籍ではまれですが、カウントがおかしい場合に知っておくと役立ちます。

次に、翻訳されたファイルに対して W3C の EPUBCheck を実行します。実際に使用するリーダーで開き、EPUB 翻訳 QA チェックリストを確認してください。ナビゲーション、注釈、画像、そして各章の最後の段落です。他の人のための書籍であれば、Kindle、Kobo、Apple Books でテストしてください。

翻訳が途中で止まった場合

プラグインはデフォルトで翻訳済みの段落をキャッシュします。ネットワークが切断されたり、エンジンがリクエストを拒否し始めたりした場合は、同じ設定で同じ書籍をもう一度実行してください。すでにキャッシュされている段落は再翻訳されません。実際には:

  1. ジョブの下でジョブログを開き、繰り返し発生するエラーを探します。これは通常、スロットリングまたは API キーの期限切れを示しています。
  2. そのエンジンの間隔を長くするか、同時実行数の上限を下げてください。
  3. 書籍を再実行します。キャッシュが停止したところから再開します。
  4. キャッシュマネージャーを使用して書籍のキャッシュをクリアするのは、用語集を編集した後など、新たに翻訳したい場合だけにしてください。エンジンや対象言語を切り替えると、すでに別のキャッシュが開始されます。

Calibre が適切なツールである場合とそうでない場合

Calibre プラグインを使用するのは:

  • 書籍が DRM フリーで、すでに Calibre ライブラリにある場合。
  • エンジンを自分で選び、支払いたい場合。
  • アドバンストモードで段落を確認しても構わない場合。
  • 書籍がほとんどプレーンな散文で、インライン書式が失われてもほとんど問題ない場合。

別のワークフローを探すのは:

  • 書籍がインライン書式、相互参照、リンクされた注釈に依存している場合。多くの教科書や学術書がそうしています。
  • 名前や用語が何百ページにもわたって一貫している必要があり、用語集ファイルを自分で管理したくない場合。
  • マークアップのチェックや修復を自分で行いたくない場合。
  • API キー、レート制限、ジョブログに不安がある場合。

2 番目のリストがあなたの書籍に当てはまる場合、一つの選択肢は EPUB を BookTranslator にアップロードして、支払う前に価格を確認することです。完了したタスクでは、対象言語のみとバイリンガルの両方のダウンロードが提供され、名前や重要用語は自分で書くファイルではなく、組み込みの用語集によって一貫性が保たれます。これは有料サービスです。どのツールを使用するにしても、出力に対して上記と同じマークアップチェックを実行し、長い翻訳に依存する前に確認してください。EPUB 翻訳ツールの比較では、Calibre プラグイン、ブラウザツール、ファイルサービスを並べて比較していますので、選択前に比較したい場合はご覧ください。

関連記事

CalibreでEPUBを翻訳する方法:プラグインの設定、出力モード、ファイルの確認