Para extração de tabelas financeiras complexas em PDFs usando Docling, as melhores opções de OCR são:
1. EasyOCR (Interno ao Docling)#
- EasyOCR é significativamente mais preciso que RapidOCR para documentos financeiros com tabelas numéricas, especialmente em português.
- Configuração recomendada:
from docling.datamodel.base_models import InputFormat from docling.datamodel.pipeline_options import PdfPipelineOptions, EasyOcrOptions from docling.document_converter import DocumentConverter, PdfFormatOption pipeline_options = PdfPipelineOptions() pipeline_options.do_ocr = True pipeline_options.ocr_options = EasyOcrOptions( lang=["pt", "en"], use_gpu=True, confidence_threshold=0.6, download_enabled=True ) doc_converter = DocumentConverter( format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)} ) - EasyOCR é mais lento (~9s/página) que RapidOCR (~6s/página), mas entrega precisão superior em tabelas numéricas.
- Referência: Discussão na comunidade Docling.
2. OCR Externo via Plugins#
- Docling suporta integração de OCR externo via sistema de plugins, permitindo uso de serviços como Azure Document Intelligence ou AWS Textract.
- Exemplo de plugin customizado para Azure:
class AzureOcrOptions(OcrOptions): kind: ClassVar[str] = "azure_ocr" endpoint: str = "" api_key: str = "" # Implementação do modelo conforme documentação Docling - Para usar, configure
allow_external_plugins=Truee registre o plugin. - Alternativamente, pode-se aplicar OCR externo em pós-processamento, extraindo as regiões das tabelas e processando-as com o serviço desejado.
3. Vision Language Models (VLMs)#
- Para tabelas financeiras complexas (com merged cells e hierarquias), VLMs superam OCR tradicional.
- Docling suporta nativamente modelos como
SMOLDOCLING_VLLM,GRANITE_VISION_VLLM,GOT2_TRANSFORMERSeLightOnOCR-2-1B(preset ID: "lightonocr"). - LightOnOCR-2-1B é um modelo de 1B parâmetros especificamente projetado para OCR e conversão para markdown. Processa imagens com max_size=1540 (dimensão mais longa 1540px) conforme recomendação do modelo. Adequado para tarefas de OCR, incluindo extração de tabelas complexas.
- VLMs extraem estrutura de tabela diretamente da imagem, sendo mais robustos para DFs brasileiras.
4. Plugin Existente: SuryaOCR#
- O plugin docling-surya é um exemplo funcional de OCR externo:
from docling.datamodel.base_models import InputFormat from docling.datamodel.pipeline_options import PdfPipelineOptions from docling.document_converter import DocumentConverter, PdfFormatOption from docling_surya import SuryaOcrOptions pipeline_options = PdfPipelineOptions( do_ocr=True, allow_external_plugins=True, ocr_options=SuryaOcrOptions(lang=["pt", "en"]) ) doc_converter = DocumentConverter( format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)} )
Resumo: Para máxima precisão em tabelas financeiras, utilize EasyOCR (interno), plugins externos (como Azure Document Intelligence), ou VLMs suportados pelo Docling. Para integração de OCR externo, utilize o sistema de plugins do Docling ou pós-processamento das regiões de tabela.