Lewati ke konten utama
Panduan pengembang

Pustaka Tesseract OCR
& wrapper.

Referensi praktis dan dapat dibandingkan untuk pustaka dan wrapper di setiap bahasa utama: apa yang dipasang, contoh minimal, dan trade-off antara binding native dan wrapper CLI.

Pustaka mana yang harus saya gunakan?

Pilih baris untuk bahasa Anda, lalu baca bagian di bawah.

BahasaDirekomendasikanJenisCatatan
PythonpytesseractWrapper CLIPaling sederhana; lihat panduan Python. Gunakan tesserocr untuk kecepatan dalam proses.
JavaScript / TypeScripttesseract.jsWASMBerjalan di peramban dan Node; tanpa dukungan PDF.
C++TessBaseAPINativeAPI inti; kontrol maksimal.
JavaTess4JBinding JNAMemerlukan pustaka native di classpath.
GogosseractBinding cgoMemerlukan libtesseract-dev.
C# / .NETTesseract (.NET)Wrapper nativePaket NuGet; menyertakan biner native.
RustleptessBinding nativeMenautkan Leptonica + Tesseract.
PHPthiagoalessio/tesseract_ocrWrapper CLIPaket Composer.

Python

Ekosistem terbesar: satu wrapper CLI plus beberapa binding native.

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

Panduan lengkap: Tesseract OCR di Python (pytesseract).

JavaScript / TypeScript

tesseract.js membawa mesin ke peramban dan Node melalui WebAssembly.

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));

Catatan: tesseract.js tidak mendukung berkas PDF dan tidak mengubah model pengenalan. Untuk Node saja, node-tesseract-ocr membungkus CLI yang terpasang.

C++

API native TessBaseAPI adalah integrasi acuan dan yang dibungkus sebagian besar binding.

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);

Kompilasi terhadap libtesseract-dev dan libleptonica-dev (lihat pemasangan).

Java

Tess4J adalah wrapper JNA yang matang; preset JavaCPP menjadi alternatif.

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 menggunakan cgo untuk menautkan pustaka C++ Tesseract.

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()

Memerlukan libtesseract-dev dan libleptonica-dev (Linux) atau paket Homebrew (macOS).

C# / .NET

Paket NuGet Tesseract membungkus pustaka native dan menyertakan biner.

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());

Bahasa lain

Binding komunitas tersedia untuk hampir semua ekosistem.

Wrapper CLI vs binding native

Untuk performa, pilihan ini lebih penting daripada bahasa.

FaktorWrapper CLIBinding native
PenyiapanMudah — cukup pasang mesinMemerlukan header/pustaka pengembangan
Kecepatan per panggilanLebih lambat (proses per panggilan)Lebih cepat (dalam proses)
KontrolHanya flag CLI dan konfigurasiAPI penuh (iterator, kotak, keyakinan)
Contohpytesseract, rtesseract, node-tesseract-ocrtesserocr, Tess4J, gosseract, TessBaseAPI

Untuk skrip sekali jalan, wrapper CLI biasanya paling cepat. Untuk layanan bervolume tinggi atau sensitif latensi, pilih binding native atau kelompokkan melalui CLI (lihat catatan performa).

FAQ pustaka

Pustaka Tesseract mana yang harus saya gunakan?

Temukan baris bahasa Anda di tabel di atas. Gunakan binding native untuk kecepatan dan kontrol, atau wrapper CLI untuk kesederhanaan.

Apakah saya perlu memasang mesin secara terpisah?

Ya untuk sebagian besar wrapper: mereka bergantung pada mesin Tesseract yang terpasang dan data bahasa. Hanya tesseract.js yang menyertakan build WebAssembly mesin.

Apakah tesseract.js mendukung PDF?

Tidak. Ia mengenali gambar; konversi dulu halaman PDF menjadi gambar atau gunakan pustaka yang menambahkan dukungan PDF.

Mana yang paling cepat?

Binding native dalam proses seperti tesserocr, Tess4J, dan gosseract menghindari permulaan proses per panggilan. Untuk wrapper CLI, kelompokkan halaman dan gunakan multiprocessing.

Pasang mesin, lalu pilih bahasa Anda.