PDF için Tesseract OCR
ve aranabilir PDF'ler.
Tesseract ile PDF'lere OCR uygulamanın tam ve test edilmiş kılavuzu: sayfaları rasterleştirme, aranabilir PDF oluşturma, OCRmyPDF ve pdfsandwich kullanımı, Python'da uçtan uca çalıştırma ve en sık karşılaşılan hataları düzeltme.
Kısaca (tek komut)
Gerçek çok sayfalı bir PDF için OCRmyPDF en hızlı yoldur.
pip install ocrmypdf # veya: apt install ocrmypdf
ocrmypdf girdi.pdf cikti.pdfOCRmyPDF yok mu? Rasterleştirin ve Tesseract CLI'yi doğrudan kullanın — aşağıya bakın.
PDF'ler neden rasterleştirilmelidir
Tesseract PDF kapsayıcılarını değil görselleri tanır.
PDF bir kapsayıcıdır: vektör metin, gömülü yazı tipleri veya taranmış sayfa görselleri içerebilir. Tesseract raster görselleri (TIFF, PNG, JPEG, WebP…) okur, bu yüzden sayfalar önce görsele dönüştürülmelidir. Kurulu araçlara göre rasterleştirici seçin:
| Araç | Kurulum | Notlar |
|---|---|---|
pdftoppm (poppler) | apt install poppler-utils | Hızlı, betiklenebilir, klasik seçim |
pdftocairo (poppler) | poppler-utils | pdftoppm'e benzer, Cairo çıktısı |
| ImageMagick | apt install imagemagick | convert -density 300 in.pdf out.tif |
| PyMuPDF | pip install pymupdf | Saf Python, harici ikili dosya yok |
| pdf2image | pip install pdf2image | poppler'ı saran Python kütüphanesi |
# PDF -> sayfa başına 300 DPI PNG
pdftoppm -png -r 300 girdi.pdf sayfaEn önemlisi DPI'dır: 300 DPI standart dengedir; küçük yazı tipleri veya arşivleme için 600 DPI; 200 DPI altından kaçının.
Tesseract CLI ile aranabilir PDF oluşturma
pdf çıktı yapılandırmasıyla bir görsel, aranabilir bir PDF sayfasına dönüşür.
# Görsel -> aranabilir PDF
tesseract sayfa-1.png cikti pdf
# Yalnızca metin katmanı (görsel olmadan)
tesseract tarama.png cikti textonly_pdf
# Birden çok sayfayı tek PDF'te: görsel listesi verin
tesseract gorselliste.txt cikti pdfÇok sayfalı PDF için her görsel yolunu gorselliste.txt içinde ayrı satıra yazın. Tam biçim başvurusu: belgeler.
Yöntem B — OCRmyPDF (gerçek PDF'ler için önerilir)
OCRmyPDF rasterleştirme, OCR, eğim düzeltme, döndürme ve görünmez metin katmanını tek komutta yapar.
ocrmypdf girdi.pdf cikti.pdf # temel
ocrmypdf -l eng+tur girdi.pdf cikti.pdf # diller
ocrmypdf --deskew --rotate-pages girdi.pdf cikti.pdf
ocrmypdf --optimize 2 girdi.pdf cikti.pdf # dosyayı küçült
ocrmypdf --skip-text girdi.pdf cikti.pdf # metni olan sayfaları koruOCRmyPDF Tesseract'ı kullanır ve Ghostscript ile poppler araçlarını gerektirir. Faydalı bayraklar: --force-ocr, --redo-ocr, --pages 1-10.
Yöntem C — pdfsandwich
Metin katmanı ekleyen ve eğim düzeltme gibi ön işleme yapan daha hafif bir sarmalayıcı.
pdfsandwich tarama.pdf # tarama_ocr.pdf üretir
pdfsandwich -lang eng+tur tarama.pdfYöntem D — Python ile uçtan uca
Rasterleştirmek için pdf2image, aranabilir PDF oluşturmak için pytesseract kullanın, sonra pypdf ile birleştirin.
import io, pytesseract
from pdf2image import convert_from_path
from pypdf import PdfWriter, PdfReader
pages = convert_from_path("girdi.pdf", dpi=300) # poppler gerektirir
writer = PdfWriter()
for page in pages:
pdf_bytes = pytesseract.image_to_pdf_or_hocr(page, extension="pdf", lang="tur")
writer.add_page(PdfReader(io.BytesIO(pdf_bytes)).pages[0])
with open("cikti.pdf", "wb") as f:
writer.write(f)Windows'ta poppler bin klasörünü poppler_path= ile verin. Daha fazla ayrıntı pytesseract rehberinde.
Hangi yöntemi kullanmalıyım?
| Yöntem | İdeal | Kurulum | Çok sayfa |
|---|---|---|---|
| OCRmyPDF | Gerçek PDF'ler, otomasyon | Ghostscript + poppler | Tek komutta evet |
| pdfsandwich | Ön işlemeli hızlı metin katmanı | poppler + ImageMagick | Evet |
| Tesseract CLI | Görseller veya görsel listeleri | Yalnızca Tesseract | Görsel listesiyle |
| Python (pdf2image) | İş akışları ve özel mantık | poppler + pytesseract | Döngü ve birleştirme |
Düzen sadakati ve metin kaplaması
Aranabilir PDF'ler neden bazen kaymış görünür ve geometri nasıl korunur.
- Görünmez metin katmanı OCR sözcük kutularıyla yerleştirilir; DPI yanlışsa kaplama kayabilir.
- Vurgulama veya arşivleme için tam koordinat gerektiğinde
hOCRveyaALTOçıktısı kullanın. pdftoppm -r 300ve orijinal sayfa boyutu kaplamayı hizalı tutar.- Karmaşık düzenlerde, orijinal görseli koruyup katmanı yerine ekleyen OCRmyPDF'i tercih edin.
Kalite ve performans
- DPI: 300 standart, küçük yazı tipleri veya arşivleme için 600.
- Sayfa aralıkları: yalnızca gerekeni işleyin (OCRmyPDF'te
--pages). - Paralellik: sayfaları paralel OCR'layın, sonra birleştirin.
- Boyut:
--optimize/ JPEG sıkıştırma veya OCR sonrası DPI düşürme. - Ön işleme: OCR öncesi eğim düzeltme ve gürültü azaltma.
Sorun giderme
| Belirti | Neden | Çözüm |
|---|---|---|
Unable to get page count. Is poppler installed? | pdf2image poppler'ı bulamıyor | poppler-utils kurun veya Windows'ta poppler_path ayarlayın. |
| Çıktı PDF'de aranabilir metin yok | OCR çalışmadı veya dil yanlış | Başarıyı doğrulayın ve -l/--language değerini belgenin diline ayarlayın. |
| Metin kaplaması kaymış | Yanlış DPI veya sayfa boyutu | Orijinal boyutta 300 DPI ile rasterleştirin. |
| Çıktı dosyası çok büyük | 600 DPI kayıpsız görseller | --optimize / JPEG kullanın veya DPI'ı düşürün. |
| Parola korumalı PDF başarısız | Şifreli girdi | Önce şifresini çözün veya aracın desteklediği parola bayrağını verin. |
PDF SSS
Bir PDF'yi nasıl aranabilir yaparım?
ocrmypdf girdi.pdf cikti.pdf kullanın veya sayfaları rasterleştirip tesseract sayfa.tif cikti pdf çalıştırın.
Tesseract bir PDF'yi neden doğrudan okuyamaz?
Tesseract raster görselleri tanır, bu yüzden PDF sayfaları önce görsele dönüştürülmelidir.
Hangi DPI kullanılmalı?
Çoğu belge için 300 DPI; küçük yazı tipleri veya arşivleme için 600 DPI.
Python'da bir PDF'ye OCR uygulayabilir miyim?
Evet — poppler ile pdf2image ve pytesseract.image_to_pdf_or_hocr kullanın, sayfaları pypdf ile birleştirin.
Düzeni nasıl hassas tutarım?
Orijinal sayfa boyutunu ve DPI'ı koruyun ve görseli koruyup metin katmanını üstüne ekleyen OCRmyPDF'i tercih edin.