オープンソースプロジェクト
tesseract-ocr/tesseract avatar
tesseract-ocr/tesseract

Tesseract OCRを画像処理へ組み込む前に確認したい入力、学習、出力

Tesseract オープンソース OCR エンジン (メイン リポジトリ)

スター 76,500フォーク 10,802C++Apache-2.0

ひと目でわかる

これは何?
tesseract-ocr/tesseractのREADMEをもとに、LSTMとlegacy engine、traineddata、画像品質、CLI、library利用、導入とライセンスを整理します。
誰に向いている?
Tesseractは、画像から文字を取り出す処理をcommand lineまたはlibtesseractとして自分のアプリケーションへ組み込みたい開発者向けの候補です。LSTMベースの新engineとTesseract 3互換のlegacy mode、100以上の言語、複数画像形式と出力形式をREADMEが説明していますが、認識率は入力画像、traineddata、layout、言語、設定で変わります。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 5 日前です。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

libtesseractとCLIから選ぶOCR engine

Tesseractは、libtesseractというOCR engineと、tesseractというcommand line programを含むpackageです。READMEは、文字認識をlibraryとして自分のapplicationへ組み込む方法と、画像をコマンドから処理する方法の二つの入口を示しています。単独のGUI applicationではなく、必要なら3rdParty documentationを参照するよう明記されています。

画像を一括処理するscriptではCLIが扱いやすく、既存のCやC++ applicationへ組み込む場合はlibtesseractのAPIが候補になります。他のprogramming languageから使う場合は、AddOnsのwrapper documentationへ案内されています。利用形態を先に決め、CLIのprocess、libraryのmemory、error、thread、file保存をそれぞれ設計します。

OCR結果を得られることと、業務で使える精度を得られることは別です。READMEはengineの機能を説明する資料であり、契約書、帳票、手書き文字、複雑な表など、各入力での認識率を保証していません。まず対象画像と許容できない誤りを定義し、実際の画像で評価します。

LSTMとlegacy modeの関係

Tesseract 4では、line recognitionに焦点を置くLSTMベースの新しいOCR engineが追加されました。同時に、Tesseract 3のcharacter pattern認識に基づくlegacy OCR engineも支援されます。Tesseract 3互換を使う場合は、--oem 0でLegacy OCR Engine modeを選ぶとREADMEにあります。

legacy engineを使うには、対応するtraineddata fileが必要です。例としてtessdata repositoryのdataが挙げられています。言語やengine modeを変更すると結果の比較条件が変わるため、使用した--oem、traineddata、入力画像、language指定、output形式を記録します。新engineとlegacy engineを同じ精度のものとして扱わず、対象文書で両方を測ります。

LSTMという名称だけで、手書きや低画質画像を自動的に読めるとは判断しません。READMEは、画像品質を改善すると多くの場合にOCR結果がよくなると注意しています。認識前に傾き、解像度、文字の大きさ、contrast、noise、余白、page layoutを点検し、前処理の有無で結果を比較します。

言語、画像形式、traineddata

TesseractはUnicodeのUTF-8を支援し、100以上の言語をout of the boxで認識できるとREADMEにあります。PNG、JPEG、TIFFなど複数の画像形式も支援します。多言語対応を使う場合は、対象言語のtraineddata、language指定、文字方向、混在言語の順序を具体的に決めます。

対応言語の数は、すべての書体、画質、文書layoutで同じ結果になることを意味しません。日本語、英語、数字、記号が混在する画像では、代表的な画像を用意し、言語設定の組み合わせと誤認識の種類を記録します。traineddataの取得元、版、保存場所を固定し、環境によって別のdataが読み込まれないようにします。

画像形式の対応と画像の内容の読みやすさも分けます。PNGを読めても、圧縮で文字が崩れた画像や、傾いたscan、背景のある写真で結果が安定するとは限りません。原画像を保管し、前処理後の画像、認識結果、失敗箇所を対応づけて保存します。

CLIの入力とページ分割設定

READMEの基本的なCLI usageは、tesseract imagename outputbase [-l lang] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]という形です。入力画像、出力のbase name、language、engine mode、page segmentation mode、設定fileを指定する構造です。詳細なoptionはtesseract --helpまたはman tesseractで確認し、最小の例から設定を一つずつ追加します。

--oemはLSTMやlegacyを含むengineの選択に関わり、--psmはpage layoutの扱いに関わります。設定の組み合わせで結果が変わるため、成功したコマンドだけでなく、失敗した設定と対象画像のlayoutも残します。単一の行、段組み、表、画像内の短いlabelを同じ設定で処理せず、文書種別ごとに評価します。

出力base nameから生成されるfile、exit status、stderr、処理時間を記録します。大量処理では、空画像、壊れた画像、巨大画像、認識対象外の画像を含め、process停止、再試行、partial result、重複処理を決めます。READMEのCLI入口をproduction queueの仕様とみなさず、周辺の処理を自分で設計します。

plain textからPDFまでの出力設計

Tesseractはplain text、hOCR HTML、PDF、invisible-text-only PDF、TSV、ALTO、PAGEなど複数のoutput形式を支援するとREADMEにあります。用途に応じて、単純な文字列、位置情報を持つHTML、検索可能なPDF、表形式のTSV、文書構造向けのALTOやPAGEを選べます。

形式を選ぶときは、後段の検索、画面表示、校正、分析、保存期間を先に定義します。plain textだけでは文字位置を失いますが、TSVやhOCRでは座標と信頼度の扱いが必要になります。PDFを生成できても、元のlayout、font、画像、hidden textの表示が利用者の期待と一致するとは限りません。

評価では、認識文字、座標、段落順、表の列、page境界、UTF-8、空白、改行をサンプルごとに比較します。入力画像とoutput fileを同じ識別子で保存し、engine、language、traineddata、--psm、--oemをmetadataへ残します。後段が一つの形式だけを必要とする場合も、変換前の結果を失わない設計にします。

精度を左右する画像品質と学習

READMEは、よりよいOCR結果を得るため、多くの場合にTesseractへ渡す画像の品質を改善する必要があると注意しています。これはengineを変更する前に確認すべき実務上の要点です。解像度、blur、noise、contrast、rotation、余白、文字と背景の差を入力画像ごとに確認します。

Tesseractは他の言語を認識するようtrainingできるとREADMEにあります。Training Tesseractのdocumentationへ案内されていますが、学習dataを作れば直ちに精度が上がるとは限りません。対象font、文書layout、誤認識例、評価用画像、学習前後の比較を用意し、改善した画像とmodelを版管理します。

文字認識の正しさは、抽出文字だけでなく業務処理で判断します。日付、金額、ID、氏名、表の列など、誤ると後段へ影響する項目を別に集計し、低信頼結果を人の確認へ送る境界を決めます。READMEはtrainingの入口を示しますが、評価用datasetや業務ごとの閾値を提供するものではありません。

導入、版、supportの確認先

Tesseractは、pre-built binary packageからinstallする方法と、sourceからbuildする方法をREADMEで案内しています。source buildの前には、supported compilersに含まれるcompilerがsystemにあるか確認するよう求めています。OSのpackage版を使うのか、自分でcompileするのかを決め、取得元と版を記録します。

READMEのBrief historyでは、major version 5がcurrent stable versionで、5.0.0が2021年11月30日に始まったと説明されています。素材のrelease metadataには5.5.3、5.5.2、5.5.1が記録され、取得日は2026年8月29日です。これは取得時点の情報であり、導入時のrecommended versionを自動的に決めるものではありません。

Release Notes、Change Log、main branch、issue tracker、planning documentationが更新確認の入口です。Supportでは、まずrepository guideline、documentation、FAQ、user forum、developer forum、past issueを読むよう案内し、質問をbug issueとして送らないよう求めています。問題報告には、版、入力画像、設定、output、再現手順を秘密情報を除いて添えます。

Apache-2.0と導入前の判定

素材のlicenseはApache License Version 2.0です。再配布や改変を検討する場合は、採用版のLICENSE、traineddata、wrapper、pre-built package、外部の画像やfontの条件を個別に確認します。licenseはOCR精度、support、security、入力データの保存、個人情報の扱いを保証しません。

Tesseractが向くのは、CLIやlibtesseractを使い、画像から文字や位置情報を抽出する処理を自分のpipelineへ組み込みたい場合です。GUIが必要なら、READMEが案内する3rdParty projectを別に選びます。多言語、複数形式、custom trainingが必要な場合も、入力画像と後段の処理を含む小さな評価を先に行います。

採用前の記録には、画像形式、language、traineddata、--oem、--psm、output形式、版、license、誤認識率、処理時間、再試行方法を含めます。READMEの機能説明を自分の本番精度として引用せず、代表画像で合格条件を定義し、条件を満たさない文書は人の確認へ送る設計にします。

編集部の結論

Tesseractは、画像から文字を取り出す処理をcommand lineまたはlibtesseractとして自分のアプリケーションへ組み込みたい開発者向けの候補です。LSTMベースの新engineとTesseract 3互換のlegacy mode、100以上の言語、複数画像形式と出力形式をREADMEが説明していますが、認識率は入力画像、traineddata、layout、言語、設定で変わります。導入前にGUIの有無、画像品質、言語データ、出力形式、版、licenseを固定し、代表画像で誤認識と処理時間を測定してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート