Tesseract OCRのセットアップ方法初心者向けインストールガイド&よくある落とし穴

Tesseractは世界で最も広く使われているオープンソースのOCRエンジンです。無料で、100以上の言語に対応し、どんな環境でも動作します。しかし、インストールして最初の実行で使える出力を得るまでには、GitHubのREADMEでは省略されているいくつかの手順が必要です。このガイドでは、インストール、最初の抽出、実際に使うコマンドの早見表、そして初心者がつまずきやすい3つの落とし穴について詳しく解説します。

手入力をやめよう — AIに読み取らせるだけ
画像やPDFをアップロード — 10秒で構造化データに
今すぐ試す →
Tesseract OCRのセットアップに関する記事タイトルと、OSごとのコマンド、請求書用のPSM 4、構造化フィールドのないフラットなテキスト出力という3つのアイコンを示すブログの表紙イラスト。

重要なポイント

  1. Tesseract — 世界で最も使われているオープンソースのOCRエンジン — は無料で、100以上の言語に対応し、クリーンなスキャンでは95〜99%の精度を達成します。しかし、デフォルト設定では、スマホ写真やレシートは文字化け、行の結合、悪名高い「Empty page!!」エラーを返すことがよくあります。
  2. 初心者の問題の約80%は、修正可能な3つのミスが原因です — そのどれも「エンジンが悪い」というわけではありません。最も効果が大きい修正はPSMモードの変更です。PSM 3(「完全自動」)で文字化けするレシートも、1つのフラグ(--psm 4)でクリーンで読みやすい出力が得られます。
  3. すべてのTesseractユーザーはいつか同じ壁にぶつかります。請求書番号、日付、合計、明細項目はすべて文字として存在するのに、ツールはどれがどれだか認識できないのです。正しいスプレッドシートの列に収まる名前付きフィールドを得るには、文字だけでなくドキュメントの意味を読み取るレイヤーが必要です。

Tesseract OCRとは(そしてそうでないもの)

Tesseractは、1980年代にHewlett-Packardで開発され、2006年以降はGoogleがメンテナンスを担当しているオープンソースの光学文字認識エンジンです。スキャンしたドキュメントやページの写真など、テキストを含む画像を受け取り、そこから文字を一文字ずつ抽出します。

Tesseractが得意とするのは1つのことだけです:きれいな印刷テキストの文字認識です。300 DPIでスキャンしたタイプ済みのページを渡せば、95〜99%の精度で単語を返します。スマートフォンで撮影したレシートの写真を渡すと、精度は低下します。手書きのフォームを渡すと、実質的に使い物になりません。

この境界線を理解することが重要なのは、ほとんどの初心者が「OCRが悪い」と非難するケースが、実際には正しいツールを間違った問題に適用しているだけだからです。Tesseractは文字を読み取ります。ドキュメント構造は理解しません。どの数字が請求書の合計で、どの数字が明細項目の小計なのかはわかりませんし、テーブルも認識せず、意味論的なフィールドの概念もありません。そのフラットなテキスト出力は、バグではなく機能です。Tesseractが最新のAI抽出とどう違うのかを詳しく知りたい方は、OCRとは何かの解説と、最高のオープンソースOCRツール比較をご覧ください。

TesseractはApache 2.0ライセンスの下で配布されています。無料で使用、変更、再配布が可能です。

Tesseractが読み取れるものの3列比較:95〜99%の精度で緑のチェックが付いたきれいな300 DPIスキャン、精度低下を示す琥珀色の警告が付いたスマートフォンで撮影したレシートの写真、45%で赤いバツ印が付いた手書きフォーム。

インストール:3つのOS、それぞれ1つのコマンド

TesseractにはGUIインストーラーのウィザードは付属していません(WindowsのNSISインストーラーを除く)。LinuxとmacOSではシステムのパッケージマネージャー、Windowsではサードパーティ製インストーラーを使用してインストールします。重要なのは、エンジンと必要な言語データの両方をインストールすることです。

以下の表は、各OSの主なインストール方法をまとめたものです。インストール後は、必ずtesseract --versionで確認してください。

OSインストールコマンド追加の言語データ
Ubuntu/Debian Linuxsudo apt install tesseract-ocrsudo apt install tesseract-ocr-deu(ドイツ語)、tesseract-ocr-fra(フランス語)など
macOS(Homebrew)brew install tesseractbrew install tesseract-lang(全言語を一度にインストール)
WindowsUB Mannheimからダウンロード(64ビット版インストーラー)インストール中に言語を選択するか、.traineddataファイルをC:\Program Files\Tesseract-OCR\tessdata\にダウンロード
UbuntuまたはDebian、macOS(Homebrew)、WindowsにTesseractをインストールするための3つの比較カード。各カードにインストールコマンドが記載され、WindowsカードにはインストールディレクトリをPATHに追加する旨の注記がある。

Windowsでの重要な注意点:一部のバージョンでは、インストーラーがTesseractをシステムのPATHに自動的に追加しません。インストールディレクトリ(通常はC:\Program Files\Tesseract-OCR)をシステムのPATHに追加するか、tessdataフォルダーを指すTESSDATA_PREFIX環境変数を設定する必要があります。これは初心者が最もよく陥るエラーの原因であり、以下の落とし穴セクションで詳しく説明します。

初めての抽出:Python + pytesseract

Tesseractはコマンドラインから直接使えますが、多くの開発者はPythonから呼び出したいでしょう。pytesseractライブラリは、TesseractバイナリのクリーンなPythonラッパーを提供します。

Pythonパッケージをインストールします:

pip install pytesseract pillow

活字がはっきりした画像(タイプライターで打たれた手紙、スキャンした書類、きれいなレシート写真など)を用意し、作業ディレクトリにsample.pngとして保存します。次に以下を実行します:

from PIL import Image
import pytesseract

img = Image.open('sample.png')
text = pytesseract.image_to_string(img)
print(text)

すべて正しくインストールされていれば、抽出されたテキストがターミナルに表示されます。TesseractNotFoundError: tesseract is not installed or it's not in your PATHが表示された場合は、下の注意点のセクションに進んでください。それが注意点その1で、修正は簡単です。

Windowsでは、pytesseractにTesseract実行ファイルの場所を指定する必要がある場合もあります:

import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

初回の抽出で期待できること: きれいな高解像度の書類では、適切な改行で正確なテキストが得られます。低品質の写真や複雑なレイアウトの書類では、文字化け、行の結合、文字欠落が発生します。これはバグではありません。Tesseractはきれいな出力を得るためにきれいな入力が必要です。実際の書類では、画像の前処理(しきい値処理、傾き補正、ノイズ除去)がしばしば必要です。

実際に使う5つのコマンド

Tesseractのコマンドラインインターフェースには数十のオプションがあります。実際には、日常的に使うのはほんの一部です。チートシートはこちら:

1

基本のテキスト抽出

tesseract scan.png stdout

抽出したテキストをターミナルに直接出力します。stdout を output に置き換えると、output.txt に保存されます。

2

言語を指定する

tesseract scan.png stdout -l deu

-l フラグに3文字のISOコードを指定します。複数言語の場合は -l eng+deu+fra のように指定します。このフラグを省略すると、Tesseract は英語のみをデフォルトとします。

3

ページセグメンテーションモード(PSM)

tesseract receipt.png stdout --psm 4

最も効果的なチューニングパラメータです。PSM 4 は単一のテキスト列を想定します(請求書に最適)。PSM 6 は均一なブロックを想定します。PSM 7 は画像を単一行として扱います。テーブルが乱れる場合、通常は PSM で解決します。

4

検索可能なPDF出力

tesseract scan.png output pdf

元の画像の上にテキストレイヤーを持つPDFを作成します。スキャン文書を検索可能に保ちながらアーカイブするのに便利です。必要に応じて -l や --psm と組み合わせることもできます。

5

フォルダ内の全画像を一括処理

for file in *.jpg; do tesseract "$file" "${file%.jpg}"; done

現在のディレクトリ内のすべてのJPGを処理し、画像ごとに1つの .txt ファイルを生成します。拡張子を .jpg から .png など、お使いのファイルに合わせて変更してください。Windows PowerShell では、同等のコマンドは次のとおりです: Get-ChildItem *.jpg | ForEach-Object { tesseract $_.Name $_.BaseName }。

PSMモードを理解する:最も重要な設定

Tesseractの文字化けを修正する4つのPSMモードを示すチェックリストのイラスト。デフォルトのPSM 3では文字が結合してレシートが空ページになるという赤い注記があり、PSM 4、6、7、11の番号付き行が続く。

Tesseractには14のページセグメンテーションモード(PSM 0〜13)があります。デフォルトはPSM 3 — 完全自動ページセグメンテーションです。多くの実用的なドキュメントでは、自動モードは誤った判断をすることがあり、この設定を変更することが最も効果の高い調整です。

実際に使用するモードの実践的なガイドは次のとおりです:

PSM機能使用する場面
3完全自動ページセグメンテーション(デフォルト)テキストのブロックが1つでレイアウトが明確なシンプルなページ。手紙、記事、わかりやすいドキュメントに適しています。
4可変サイズのテキストの単一列を想定請求書やフォームに最適。請求書は通常、ヘッダーと明細行でフォントサイズが異なる単一列のデータで構成されています。PSM 4は行をまとめて保持します。
6単一の均一なテキストブロックを想定画像全体が1つの連続した段落の場合。PSM 6は4よりも厳格で、全体で均一なフォントと行間隔を想定します。
7画像を単一のテキスト行として扱うナンバープレート、バーコード番号、単一行のドキュメントフィールド。PSM 7はTesseractに「テキスト行がちょうど1行ある — それを読み取れ」と指示します。
11スパーステキスト — 順序に関係なくできるだけ多くのテキストを検出テキストがページ全体に散在するドキュメント — 看板、テキストが重なったスクリーンショット、レイアウトが重要でない複合コンテンツの画像。

PSMモードの直感を養う最も簡単な方法は、1つの画像を各モードで実行して出力を比較することです。PSM 3で文字化けするレシートは、PSM 4ではきれいで読みやすい出力になることがよくあります。間違ったPSMモードは、初心者が「Tesseractは機能しない」と結論づける最も一般的な理由ですが、実際には正常に機能しています — ただ誤ったレイアウトの想定を使用しているだけです。

Tesseractの出力を改善する画像前処理の詳細なガイドについては、OCR精度を向上させる方法に関する記事をご覧ください。

言語パック:英語以外の言語を追加する

Tesseractは100以上の言語に対応していますが、基本インストールに含まれるのは英語のみです。追加の言語は.traineddataファイルとして配布され、Tesseractのtessdataディレクトリに配置します。

traineddataファイルの公式リポジトリは3つあり、適切なものを選ぶことが重要です:

  • tessdata_fast — 速度最適化されたLSTMモデル。tessdata_best比で約2~3倍高速、精度低下は最小限。ほとんどのユーザーにおすすめ。
  • tessdata_best — 最も高精度なLSTMモデル。約2~3倍低速。精度が最優先で処理速度が問題にならない場合に使用。
  • tessdata(レガシー) — レガシーエンジンモデルとLSTMモデルの両方を含む。OEMモード0または2(レガシーエンジン)を使用する場合に必要。

言語を手動で追加するには、tessdata_fastリポジトリから.traineddataファイルをダウンロードし、tessdataディレクトリに配置します:

# Linuxのデフォルトtessdataの場所
sudo cp ~/Downloads/deu.traineddata /usr/share/tesseract-ocr/5/tessdata/

# macOS(Homebrewデフォルト)
cp ~/Downloads/deu.traineddata /opt/homebrew/share/tessdata/

# Windows
# C:\Program Files\Tesseract-OCR\tessdata\ にコピー

Ubuntu/Debianでは、言語パッケージを直接インストールする方法が簡単です:ドイツ語はsudo apt install tesseract-ocr-deu、フランス語はtesseract-ocr-fraなど。macOSでは、brew install tesseract-langですべての言語パックを一度にインストールできます。

よくある3つの落とし穴(とその修正方法)

様々な環境でTesseractをセットアップしてきた経験上、初心者の問題の約80%は以下の3つに集約されます。

1

TesseractNotFoundError / 「tesseract is not in your PATH」

これが最もよく検索されるTesseractエラーであるのには理由があります。Tesseractバイナリ(インストールされたエンジン)がインストールされていないか、システムから見つけられない状態です。

診断方法:ターミナルを開いて tesseract --version を実行してください。「command not found」と表示された場合、TesseractがPATHに含まれていません。

修正方法(Linux/macOS):パッケージマネージャーは通常PATHに含まれる標準パスにインストールします。含まれていない場合は、export PATH=$PATH:/usr/bin/tesseract を実行するか、パッケージマネージャーで再インストールしてください。

修正方法(Windows):TesseractのインストールディレクトリをシステムのPATHに追加してください(システムプロパティ → 環境変数 → PATHを編集 → C:\Program Files\Tesseract-OCR を追加)。または、Pythonスクリプト内で設定します:pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'。

2

「空のページ」または文字化け出力 — PSMモードの誤り

レシートや請求書に対してTesseractを実行すると、文字が結合された壁のような出力、あるいはさらに悪いことに「Empty page!!」という結果になります。

診断方法:デフォルトのPSM 3は全ページのテキストレイアウトを想定しています。レシートは通常、幅の狭い単一カラムです。Tesseractはカラムや行を検出しようとして混乱し、すべてを結合するか、処理を諦めてしまいます。

修正方法:単一カラムの文書にはPSM 4(--psm 4)、均一なブロックにはPSM 6、単一行にはPSM 7を試してください。特定の領域を抽出する場合は、まずその領域に画像をクロップしてから、PSM 6または7を試してください。

Redditのr/learnpythonユーザーは率直にこう述べています:「ほとんどの人は前処理のステップを省略して、そのあと精度が低い理由を不思議に思っている」。スマホの写真では、しきい値処理(純粋な白黒への変換)を追加するだけで、役に立たない出力と使えるテキストの差が生まれることがよくあります。

3

画像の前処理なし — スマホ写真のままでは結果が悪い

Tesseract はスキャン文書向けに設計されています — 平坦で均一な照明、300 DPI、まっすぐな配置。スマホ写真では、遠近歪み、影、不均一な照明、ページの湾曲が生じます。Tesseract はこれらのいずれも得意としていません。

診断: スマホ写真では文字欠け、ランダムな記号、単語の連結が発生するのに、スキャンでは問題なく動作する場合、画像の前処理が必要です。

修正: OpenCV または Pillow を使用して前処理ステップを追加します。グレースケール変換、しきい値処理(大津の方法または適応的)、ページが回転している場合は傾き補正を適用します。最小限の前処理パイプラインは次のとおりです:

from PIL import Image, ImageEnhance, ImageFilter
import pytesseract

img = Image.open('sample.jpg')
# グレースケールに変換し、コントラストを強調
img = img.convert('L')
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(2.0)
# しきい値を適用
img = img.point(lambda x: 0 if x < 140 else 255)
text = pytesseract.image_to_string(img, config='--psm 4')

この3行の前処理ブロックで、実在の文書における「OCRがうまくいかない」という問題の大半が解決します。さらに詳しく知りたい場合は、公式の ImproveQuality ガイドで、余白の除去、ノイズ除去、回転補正などの追加テクニックを解説しています。

Tesseractでは不十分な場合

Tesseractは、印刷されたテキストの画像をゼロコストで機械可読な文字に変換するという点で優れています。しかし、ワークフローで構造化データ(請求書番号、日付、合計、明細項目をスプレッドシートの名前付きフィールドとして抽出するなど)が必要な場合、Tesseractはテキストがエンジンから出力された時点で適切なツールではなくなります。

Tesseractユーザーは誰でもいつかこの壁にぶつかります。テキストは得られるものの、それを解析し、ラベル付けし、構造化する必要がまだあるのです。請求書の表は、行と列の関係がない文字の連なりとして出力されます。明細項目と価格はそこにありますが、ヘッダーやフッターのテキストと区別がつきません。そのフラットなテキスト出力を構造化データに変換するには、広範な後処理(正規表現、ファジーマッチング、レイアウト再構築)か、まったく異なるアプローチが必要になります。

最新のAI搭載ドキュメント抽出ツールは、この問題を別のレベルで解決します。文字を読むのではなく、ドキュメントの意味を読むのです。請求書番号と支払期日の違いを、それらのフィールドがどのように見えるかではなく、何を意味するかを理解することで見分けられます。表、複数列レイアウト、フォーマットのバリエーションにも、ベンダーごとの設定なしで対応します。ドキュメントに表、手書き文字、スマートフォンで撮影した写真が含まれていたり、生のテキストではなく構造化データの抽出が必要な場合、AI抽出はTesseractの上に重なるレイヤーであり、Tesseractがそもそもカバーするように設計されていなかったギャップを埋めます。

FAQ

初心者にはTesseractとEasyOCRのどちらが良いですか?

Tesseractの方が高速で(CPUで毎分約25ページ vs EasyOCRの8ページ)、フットプリントもはるかに小さいです(約10 MB vs 約500 MB)。EasyOCRは曲線テキストや回転テキストの処理に優れており、前処理の必要性も低くなります。ドキュメントがきれいな印刷テキストであれば、Tesseractから始めてください。曲線テキストや複数スクリプトが混在する写真を扱う場合は、EasyOCRの方が初期状態で良い結果を出す可能性があります。どちらもフラットなテキスト出力を生成しますが、構造化データ抽出機能はどちらにもありません。

Tesseractは手書き文字を読み取れますか?

精度は低いです。Tesseractは印刷文字の認識用に設計されており、そのLSTMエンジンは筆記体の手書き文字に対して約45%の精度しか達成できません。つまり、単語の半分以上が誤読されることになります。手書き文書の処理には、文書を意味的に読み取るAIビジョンモデル(精度ガイドで解説)が実用的な代替手段です。

TesseractはPDFに直接対応していますか?

直接は対応していません。Tesseractは画像ファイル(PNG、JPEG、TIFF)で動作します。PDFをOCRするには、まず各ページを画像に変換する必要があります。pdftoppm(Linux/macOS)などのツールを使うか、Pythonでpdf2imageを使用します(内部でpdftoppmまたはpopplerを呼び出します)。あるいは、OCRmyPDFを使えば、この一連のワークフローをocrmypdf input.pdf output.pdfという単一のコマンドにまとめられます。

クラウドOCR APIが多数ある中、2026年でもTesseractは依然として有用ですか?

構造化が不要な大量の印刷テキストのデジタル化という特定のユースケースに関しては、はい。Tesseractの無料でCPUのみで動作する特性は、図書館のアーカイブや数百万のドキュメントの検索インデックス作成など、大量処理のシナリオでは今も匹敵するものがないでしょう。構造化された出力(名前付きフィールド、テーブル、スプレッドシートの行)が必要なシナリオでは、クラウドAI APIやImageToTable.aiのように意味的に抽出するツールの方が実用的です。Tesseractベースのパイプラインでは、後処理のエンジニアリング時間が総コストの大部分を占めるため、それを排除できるからです。

Tesseractを自分のデータでトレーニングできますか?

できますが、手順は複雑です。TesseractはLSTMのファインチューニングに対応しています。各トレーニング画像の.boxファイルの生成(グラウンドトゥルースのアノテーション作業)、トレーニングパイプラインの実行、カスタムの.traineddataファイルの作成が必要です。ほとんどの実用的なシナリオでは、汎用AIビジョンモデルをファインチューニングするか、トレーニング不要でフォーマットに適応した抽出をサポートするツールを使用する方が効率的です。

生テキストから構造化データへ

Tesseractはテキストを提供します。ImageToTable.aiは構造化データを提供します — 請求書番号、日付、合計、明細項目が名前付きの列に整理され、スプレッドシートですぐに使えます。ドキュメントをアップロードして、その違いを確認してください。

ご自身のドキュメントで違いを確認
📮 contact email: [email protected]