Lewati ke konten utama
Panduan developer

OCR Tesseract untuk PDF
dan PDF yang dapat dicari.

Panduan lengkap dan teruji untuk menjalankan OCR pada PDF dengan Tesseract: merasterkan halaman, membuat PDF yang dapat dicari, menggunakan OCRmyPDF dan pdfsandwich, menjalankan alur lengkap di Python, serta memperbaiki kesalahan yang paling umum.

Ringkas (satu perintah)

Untuk PDF multi-halaman sungguhan, OCRmyPDF adalah jalur tercepat.

bash
pip install ocrmypdf      # atau: apt install ocrmypdf
ocrmypdf masukan.pdf keluaran.pdf

Tidak punya OCRmyPDF? Rasterkan dan gunakan CLI Tesseract langsung — lihat di bawah.

Mengapa PDF harus dirasterkan

Tesseract mengenali gambar, bukan wadah PDF.

PDF adalah wadah: PDF dapat berisi teks vektor, font tersemat, atau gambar halaman hasil pindaian. Tesseract membaca gambar raster (TIFF, PNG, JPEG, WebP…), sehingga halaman harus dikonversi menjadi gambar terlebih dahulu. Pilih rasterizer sesuai alat yang Anda miliki:

AlatInstalasiCatatan
pdftoppm (poppler)apt install poppler-utilsCepat, dapat diskrip, pilihan klasik
pdftocairo (poppler)poppler-utilsMirip pdftoppm, keluaran Cairo
ImageMagickapt install imagemagickconvert -density 300 in.pdf out.tif
PyMuPDFpip install pymupdfPython murni, tanpa biner eksternal
pdf2imagepip install pdf2imagePembungkus Python untuk poppler
bash
# PDF -> PNG per halaman pada 300 DPI
pdftoppm -png -r 300 masukan.pdf halaman

DPI adalah hal terpenting: 300 DPI adalah keseimbangan standar; 600 DPI untuk huruf kecil atau pengarsipan; hindari di bawah 200 DPI.

Membuat PDF yang dapat dicari dengan CLI Tesseract

Konfigurasi keluaran pdf mengubah gambar menjadi halaman PDF yang dapat dicari.

bash
# Gambar -> PDF yang dapat dicari
tesseract halaman-1.png keluaran pdf

# Hanya lapisan teks (tanpa gambar)
tesseract pindaian.png keluaran textonly_pdf

# Beberapa halaman dalam satu PDF: berikan daftar gambar
tesseract daftar-gambar.txt keluaran pdf

Untuk PDF multi-halaman, tulis setiap jalur gambar pada baris tersendiri di daftar-gambar.txt. Referensi format lengkap: dokumentasi.

Metode B — OCRmyPDF (disarankan untuk PDF sungguhan)

OCRmyPDF menangani rasterisasi, OCR, deskew, rotasi, dan lapisan teks tak terlihat dalam satu perintah.

bash
ocrmypdf masukan.pdf keluaran.pdf                 # dasar
ocrmypdf -l eng+ind masukan.pdf keluaran.pdf     # bahasa
ocrmypdf --deskew --rotate-pages masukan.pdf keluaran.pdf
ocrmypdf --optimize 2 masukan.pdf keluaran.pdf   # perkecil file
ocrmypdf --skip-text masukan.pdf keluaran.pdf    # pertahankan halaman berteks

OCRmyPDF menggunakan Tesseract dan memerlukan Ghostscript serta alat poppler. Flag berguna: --force-ocr, --redo-ocr, --pages 1-10.

Metode C — pdfsandwich

Pembungkus yang lebih ringan yang menambahkan lapisan teks dan melakukan praproses seperti deskew.

bash
pdfsandwich pindaian.pdf          # menghasilkan pindaian_ocr.pdf
pdfsandwich -lang eng+ind pindaian.pdf

Metode D — Alur lengkap dengan Python

Gunakan pdf2image untuk merasterkan, pytesseract untuk membuat PDF yang dapat dicari, lalu gabungkan dengan pypdf.

pdf.py
import io, pytesseract
from pdf2image import convert_from_path
from pypdf import PdfWriter, PdfReader

pages = convert_from_path("masukan.pdf", dpi=300)   # memerlukan poppler
writer = PdfWriter()
for page in pages:
    pdf_bytes = pytesseract.image_to_pdf_or_hocr(page, extension="pdf", lang="ind")
    writer.add_page(PdfReader(io.BytesIO(pdf_bytes)).pages[0])
with open("keluaran.pdf", "wb") as f:
    writer.write(f)

Di Windows, berikan folder poppler bin melalui poppler_path=. Detail selengkapnya di panduan pytesseract.

Metode mana yang harus saya gunakan?

MetodeIdeal untukInstalasiMulti-halaman
OCRmyPDFPDF sungguhan, otomasiGhostscript + popplerYa, satu perintah
pdfsandwichLapisan teks cepat dengan praprosespoppler + ImageMagickYa
CLI TesseractGambar atau daftar gambarHanya TesseractDengan daftar gambar
Python (pdf2image)Alur kerja dan logika khususpoppler + pytesseractLoop dan gabungkan

Kesetiaan tata letak dan hamparan teks

Mengapa PDF yang dapat dicari terkadang tampak bergeser dan cara mempertahankan geometri.

Kualitas dan performa

Pemecahan masalah

GejalaPenyebabSolusi
Unable to get page count. Is poppler installed?pdf2image tidak menemukan popplerInstal poppler-utils atau setel poppler_path di Windows.
Tidak ada teks yang dapat dicari di PDF keluaranOCR tidak berjalan atau bahasa salahVerifikasi keberhasilan dan setel -l/--language ke bahasa dokumen.
Hamparan teks bergeserDPI atau ukuran halaman salahRasterkan pada 300 DPI dengan ukuran asli.
File keluaran sangat besarGambar 600 DPI tanpa kompresiGunakan --optimize / JPEG atau turunkan DPI.
PDF berproteksi kata sandi gagalMasukan terenkripsiDekripsi terlebih dahulu atau berikan flag kata sandi yang didukung.

FAQ PDF

Bagaimana cara membuat PDF dapat dicari?

Gunakan ocrmypdf masukan.pdf keluaran.pdf, atau rasterkan halaman lalu jalankan tesseract halaman.tif keluaran pdf.

Mengapa Tesseract tidak bisa membaca PDF secara langsung?

Tesseract mengenali gambar raster, sehingga halaman PDF harus dikonversi menjadi gambar terlebih dahulu.

DPI berapa yang harus digunakan?

300 DPI untuk sebagian besar dokumen; 600 DPI untuk huruf kecil atau pengarsipan.

Bisakah saya menjalankan OCR pada PDF di Python?

Ya — gunakan pdf2image dengan poppler dan pytesseract.image_to_pdf_or_hocr, lalu gabungkan halaman dengan pypdf.

Bagaimana cara menjaga tata letak tetap presisi?

Pertahankan ukuran halaman asli dan DPI, dan pilih OCRmyPDF yang mempertahankan gambar lalu menambahkan lapisan teks di atasnya.