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

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

手入力をやめよう — AIに読み取らせるだけ
画像やPDFをアップロード — 10秒で構造化データに
今すぐ試す
登録不要 · カード不要 · 10秒で結果
Tesseract OCRのセットアップ画面 — ターミナルウィンドウとコード

重要なポイント

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

Tesseract OCRとは(できること・できないこと)

Tesseractは、1980年代にヒューレット・パッカードで開発され、2006年からGoogleがメンテナンスしているオープンソースの光学文字認識エンジンです。スキャンした文書やページの写真など、テキストを含む画像を受け取り、文字単位でテキストを抽出します。

得意なことは一つだけです。きれいな印刷テキストの文字認識。300DPIでスキャンしたタイプ文書なら95〜99%の精度で単語を返します。スマホで撮ったレシートの写真では精度が落ちます。手書きの書類では実質的に使い物になりません。

この境界を理解することが重要です。なぜなら、多くの初心者は「OCRが悪い」と決めつけますが、実際は適切なツールを間違った問題に使っているだけだからです。Tesseractは文字を読み取ります。文書構造は理解しません。どの数字が請求書の合計で、どの数字が明細の小計なのか区別できず、表も認識せず、意味フィールドの概念もありません。フラットなテキスト出力はバグではなく仕様です。Tesseractと最新のAI抽出の比較については、OCRとはの解説と最高のオープンソースOCRツール比較をご覧ください。

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

インストール: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\に配置

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

初めての抽出: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

抽出したテキストをターミナルに直接出力。stdoutoutput に変更すると output.txt に保存。

2

言語指定

tesseract scan.png stdout -l deu

-l フラグに3文字のISOコードを指定。複数言語は -l eng+deu+fra。フラグなしの場合は英語のみ。

3

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

tesseract receipt.png stdout --psm 4

最も効果的な調整パラメータ。PSM 4は1カラムのテキスト(請求書に最適)。PSM 6は均一ブロック、PSM 7は1行として処理。表が崩れる場合はPSMが解決策。

4

検索可能なPDF出力

tesseract scan.png output pdf

元画像にテキストレイヤーを重ねたPDFを作成。スキャン文書のアーカイブと検索性に便利。-l--psm と併用可能。

5

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

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

カレントディレクトリの全JPGを処理し、画像ごとに .txt ファイルを生成。.jpg.png など適宜変更。Windows PowerShellでは Get-ChildItem *.jpg | ForEach-Object { tesseract $_.Name $_.BaseName }

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

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

実際に使用するモードの実践的なガイドは以下の通りです。

PSM機能使用シーン
3完全自動ページセグメンテーション(デフォルト)単一テキストブロックでレイアウトが明確なシンプルなページ。手紙、記事、わかりやすい文書に適しています。
4可変サイズの単一テキスト列を想定請求書やフォームに最適。請求書は通常、ヘッダーと明細行でフォントサイズが異なる単一列のデータです。PSM 4は行をまとめて認識します。
6均一な単一テキストブロックを想定画像全体が1つの連続した段落の場合。PSM 6はPSM 4より厳格で、全体で均一なフォントと行間隔を想定します。
7画像を単一のテキスト行として扱うナンバープレート、バーコード番号、単一行の文書フィールド。PSM 7は「テキスト行が1つだけ存在する」とTesseractに指示します。
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"

これが最もGoogle検索されるTesseractエラーです。Tesseractバイナリ(インストールされたエンジン)がインストールされていないか、システムから見つけられません。

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

修正 (Linux/macOS): パッケージマネージャーは通常PATHに含まれる標準パスにインストールします。もし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は全ページのテキストレイアウトを想定しています。レシートは通常、細い1列です。Tesseractは列や行を検出しようとして混乱し、すべてを結合するか諦めてしまいます。

修正: 1列の文書にはPSM 4 (--psm 4)、均一なブロックにはPSM 6、1行には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不良」の大半が解決します。詳細は公式の品質向上ガイドで、枠線除去、ノイズ除去、回転補正などの追加手法を解説しています。

Tesseractだけでは不十分な場合

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

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

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

よくある質問

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

Tesseractは高速(CPUで毎分約25ページ vs EasyOCRの8ページ)で、フットプリントもはるかに小さい(約10MB vs 約500MB)。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]