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.
| Bahasa | Direkomendasikan | Jenis | Catatan |
|---|---|---|---|
| Python | pytesseract | Wrapper CLI | Paling sederhana; lihat panduan Python. Gunakan tesserocr untuk kecepatan dalam proses. |
| JavaScript / TypeScript | tesseract.js | WASM | Berjalan di peramban dan Node; tanpa dukungan PDF. |
| C++ | TessBaseAPI | Native | API inti; kontrol maksimal. |
| Java | Tess4J | Binding JNA | Memerlukan pustaka native di classpath. |
| Go | gosseract | Binding cgo | Memerlukan libtesseract-dev. |
| C# / .NET | Tesseract (.NET) | Wrapper native | Paket NuGet; menyertakan biner native. |
| Rust | leptess | Binding native | Menautkan Leptonica + Tesseract. |
| PHP | thiagoalessio/tesseract_ocr | Wrapper CLI | Paket Composer. |
Python
Ekosistem terbesar: satu wrapper CLI plus beberapa binding native.
pytesseract— wrapper CLI standar. Mudah, tetapi memulai proses per panggilan.tesserocr— binding native ke API C++; lebih cepat dalam proses, memerlukanlibtesseract-dev.pyocr— wrapper yang mendukung beberapa mesin.aiopytesseract— wrapper asinkron untuk beban bersamaan.
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.
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.
#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.
// 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.
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.
// 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.
- Rust —
leptess(binding native),rusty-tesseract(wrapper CLI). - PHP —
thiagoalessio/tesseract_ocr(Composer, wrapper CLI). - Ruby —
rtesseract(wrapper CLI). - C — API C Tesseract (
tesseract/capi.h).
Wrapper CLI vs binding native
Untuk performa, pilihan ini lebih penting daripada bahasa.
| Faktor | Wrapper CLI | Binding native |
|---|---|---|
| Penyiapan | Mudah — cukup pasang mesin | Memerlukan header/pustaka pengembangan |
| Kecepatan per panggilan | Lebih lambat (proses per panggilan) | Lebih cepat (dalam proses) |
| Kontrol | Hanya flag CLI dan konfigurasi | API penuh (iterator, kotak, keyakinan) |
| Contoh | pytesseract, rtesseract, node-tesseract-ocr | tesserocr, 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.
Langkah berikutnya
Pasang mesin, lalu pilih bahasa Anda.