Pular para o conteúdo principal
Guia para desenvolvedores

Tesseract OCR para PDF
e PDFs pesquisáveis.

O guia completo e testado para aplicar OCR a PDF com o Tesseract: rasterizar páginas, criar PDFs pesquisáveis, usar OCRmyPDF e pdfsandwich, executá-lo de ponta a ponta em Python e corrigir os erros mais comuns.

Resumo (um comando)

Para um PDF real de várias páginas, o OCRmyPDF é o caminho mais rápido.

bash
pip install ocrmypdf      # ou: apt install ocrmypdf
ocrmypdf entrada.pdf saida.pdf

Sem o OCRmyPDF? Rasterize e use a CLI do Tesseract diretamente — veja abaixo.

Por que os PDFs precisam ser rasterizados

O Tesseract reconhece imagens, não contêineres PDF.

Um PDF é um contêiner: pode conter texto vetorial, fontes incorporadas ou imagens de páginas digitalizadas. O Tesseract lê imagens raster (TIFF, PNG, JPEG, WebP…), então as páginas precisam ser convertidas em imagens primeiro. Escolha o rasterizador conforme o que você tem instalado:

FerramentaInstalaçãoNotas
pdftoppm (poppler)apt install poppler-utilsRápido, scriptável, a escolha clássica
pdftocairo (poppler)poppler-utilsSemelhante ao pdftoppm, saída Cairo
ImageMagickapt install imagemagickconvert -density 300 in.pdf out.tif
PyMuPDFpip install pymupdfPython puro, sem binários externos
pdf2imagepip install pdf2imageWrapper de Python sobre o poppler
bash
# PDF -> um PNG por página a 300 DPI
pdftoppm -png -r 300 entrada.pdf pagina

O DPI é o mais importante: 300 DPI é o equilíbrio padrão; 600 DPI para fontes pequenas ou arquivamento; evite abaixo de 200 DPI.

Criar um PDF pesquisável com a CLI do Tesseract

Uma imagem vira uma página de PDF pesquisável com a configuração de saída pdf.

bash
# Imagem -> PDF pesquisável
tesseract pagina-1.png saida pdf

# Apenas camada de texto (sem imagem visível)
tesseract digitalizado.png saida textonly_pdf

# Várias páginas em um PDF: passe uma lista de imagens
tesseract listaimagens.txt saida pdf

Para um PDF de várias páginas, coloque cada caminho de imagem em sua própria linha em listaimagens.txt. Referência completa de formatos: documentação.

Método B — OCRmyPDF (recomendado para PDFs reais)

O OCRmyPDF cuida de rasterizar, OCR, alinhamento, rotação e da camada de texto invisível em um comando.

bash
ocrmypdf entrada.pdf saida.pdf                    # básico
ocrmypdf -l eng+por entrada.pdf saida.pdf         # idiomas
ocrmypdf --deskew --rotate-pages entrada.pdf saida.pdf
ocrmypdf --optimize 2 entrada.pdf saida.pdf       # reduz o arquivo
ocrmypdf --skip-text entrada.pdf saida.pdf        # mantém páginas com texto

O OCRmyPDF usa o Tesseract por baixo e requer Ghostscript e as ferramentas do poppler. Opções úteis: --force-ocr, --redo-ocr, --pages 1-10.

Método C — pdfsandwich

Um wrapper mais leve que adiciona uma camada de texto e aplica pré-processamento como alinhamento.

bash
pdfsandwich digitalizado.pdf          # gera digitalizado_ocr.pdf
pdfsandwich -lang eng+por digitalizado.pdf

Método D — Python de ponta a ponta

Use pdf2image para rasterizar e pytesseract para montar o PDF pesquisável, depois combine com pypdf.

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

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

No Windows, passe a pasta bin do poppler com poppler_path=. Mais detalhes no guia do pytesseract.

Qual método devo usar?

MétodoIdeal paraConfiguraçãoVárias páginas
OCRmyPDFPDFs reais, automaçãoGhostscript + popplerSim, em um comando
pdfsandwichCamada de texto rápida com pré-processamentopoppler + ImageMagickSim
CLI do TesseractImagens ou listas de imagensApenas o TesseractCom uma lista de imagens
Python (pdf2image)Pipelines e lógica personalizadapoppler + pytesseractLoop e combinação

Fidelidade de layout e sobreposição de texto

Por que os PDFs pesquisáveis às vezes parecem desalinhados e como manter a geometria.

Qualidade e desempenho

Solução de problemas

SintomaCausaSolução
Unable to get page count. Is poppler installed?O pdf2image não encontra o popplerInstale poppler-utils ou defina poppler_path no Windows.
O PDF de saída não tem texto pesquisávelO OCR não foi executado ou o idioma está erradoConfirme o sucesso e defina -l/--language para o idioma do documento.
A sobreposição de texto está desalinhadaDPI ou tamanho de página erradosRasterize a 300 DPI com o tamanho original.
O arquivo de saída é enormeImagens sem perdas a 600 DPIUse --optimize / JPEG, ou reduza o DPI.
PDF protegido por senha falhaEntrada criptografadaDescriptografe primeiro ou passe a senha se a ferramenta suportar.

Perguntas frequentes de PDF

Como torno um PDF pesquisável?

Use ocrmypdf entrada.pdf saida.pdf, ou rasterize as páginas e execute tesseract pagina.tif saida pdf.

Por que o Tesseract não lê um PDF diretamente?

O Tesseract reconhece imagens raster, então as páginas do PDF precisam ser convertidas em imagens primeiro.

Qual DPI devo usar?

300 DPI para a maioria dos documentos; 600 DPI para fontes pequenas ou arquivamento.

Posso aplicar OCR a um PDF em Python?

Sim: use pdf2image com poppler e pytesseract.image_to_pdf_or_hocr, e combine as páginas com pypdf.

Como mantenho o layout preciso?

Use o mesmo tamanho e DPI originais e prefira o OCRmyPDF, que preserva a imagem e adiciona a camada de texto por cima.