メインコンテンツへスキップ
開発者ガイド

Tesseract OCR のライブラリ
とラッパー。

主要な各言語向けのライブラリとラッパーの実用的で比較可能なリファレンスです。何をインストールするか、最小サンプル、ネイティブバインディングと CLI ラッパーのトレードオフを掲載します。

どのライブラリを使うべきか

お使いの言語の行を選び、以下のセクションをお読みください。

言語推奨タイプ備考
PythonpytesseractCLI ラッパー最も簡単。Python ガイドを参照。tesserocr はインプロセスで高速。
JavaScript / TypeScripttesseract.jsWASMブラウザと Node で動作。PDF 非対応。
C++TessBaseAPIネイティブコア API。最大の制御。
JavaTess4JJNA バインディングクラスパスにネイティブライブラリが必要。
Gogosseractcgo バインディングlibtesseract-dev が必要。
C# / .NETTesseract (.NET)ネイティブラッパーNuGet パッケージ。ネイティブバイナリ同梱。
RustleptessネイティブバインディングLeptonica + Tesseract にリンク。
PHPthiagoalessio/tesseract_ocrCLI ラッパーComposer パッケージ。

Python

最大のエコシステム。CLI ラッパーに加え、複数のネイティブバインディングがあります。

python
pip install pytesseract pillow
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open("image.png")))

完全ガイド: Python で Tesseract OCR(pytesseract)。

JavaScript / TypeScript

tesseract.js は WebAssembly 経由でエンジンをブラウザと Node に提供します。

javascript
npm install tesseract.js
const Tesseract = require('tesseract.js');
Tesseract.recognize('image.png', 'eng', { logger: m => console.log(m) })
  .then(({ data: { text } }) => console.log(text));

注: tesseract.js は PDF ファイルに対応しておらず、認識モデルも変更しません。Node 専用なら node-tesseract-ocr がインストール済みの CLI をラップします。

C++

ネイティブの TessBaseAPI は参照となる統合で、ほとんどのバインディングがこれをラップしています。

ocr.cpp
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI();
api->Init(NULL, "eng");
Pix* image = pixRead("image.png");
api->SetImage(image);
char* text = api->GetUTF8Text();
printf("%s", text);
api->End(); pixDestroy(&image);

libtesseract-dev と libleptonica-dev に対してビルドします(インストールを参照)。

Java

Tess4J は成熟した JNA ラッパーです。JavaCPP プリセットが代替になります。

Ocr.java
// Maven: net.sourceforge.tess4j:tess4j
import net.sourceforge.tess4j.Tesseract;
Tesseract t = new Tesseract();
t.setDatapath("tessdata");
String text = t.doOCR(new java.io.File("image.png"));

Go

gosseract は cgo で Tesseract C++ ライブラリにリンクします。

main.go
go get github.com/otiai10/gosseract/v2
import "github.com/otiai10/gosseract/v2"
client := gosseract.NewClient()
defer client.Close()
client.SetImage("image.png")
text, _ := client.Text()

libtesseract-dev と libleptonica-dev(Linux)、または Homebrew パッケージ(macOS)が必要です。

C# / .NET

NuGet パッケージ Tesseract がネイティブライブラリをラップし、バイナリを同梱します。

Program.cs
// dotnet add package Tesseract
using Tesseract;
using var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default);
using var img = Pix.LoadFromFile("image.png");
using var page = engine.Process(img);
Console.WriteLine(page.GetText());

その他の言語

ほとんどすべてのエコシステムにコミュニティのバインディングがあります。

CLI ラッパー vs ネイティブバインディング

パフォーマンスでは、言語よりもこの選択が重要です。

要素CLI ラッパーネイティブバインディング
セットアップ簡単 — エンジンをインストールするだけ開発用ヘッダー/ライブラリが必要
呼び出しごとの速度遅い(呼び出しごとにプロセス)速い(インプロセス)
制御CLI フラグと設定のみ完全な API(イテレータ、矩形、信頼度)
例pytesseract、rtesseract、node-tesseract-ocrtesserocr、Tess4J、gosseract、TessBaseAPI

単発のスクリプトには CLI ラッパーが最短です。大量処理や低レイテンシが求められるサービスでは、ネイティブバインディングを選ぶか CLI でまとめて処理してください(パフォーマンスのヒントを参照)。

ライブラリ FAQ

どの Tesseract ライブラリを使うべきですか?

上の表でお使いの言語の行を確認してください。速度と制御にはネイティブバインディング、簡単さには CLI ラッパーを使います。

エンジンは別途インストールが必要ですか?

ほとんどのラッパーで必要です。インストール済みの Tesseract エンジンと言語データに依存します。エンジンの WebAssembly ビルドを同梱するのは tesseract.js だけです。

tesseract.js は PDF に対応していますか?

いいえ。画像を認識します。まず PDF のページを画像に変換するか、PDF 対応を追加するライブラリを使ってください。

どれが最速ですか?

tesserocr、Tess4J、gosseract のようなインプロセスのネイティブバインディングは、呼び出しごとのプロセス起動を避けられます。CLI ラッパーではページをまとめて multiprocessing を使ってください。

エンジンをインストールし、言語を選びましょう。