Python Advanced Series — OCR & PDFs

12. Extracción de tablas escaneadas

12. Extracting Scanned Tables

Saca datos estructurados de facturas o expedientes físicos en formato PDF utilizando modelos avanzados de conversión.

Extract structured data from invoices or physical case files in PDF format using advanced conversion models.

⚠️ Advertencia de ciberseguridad y producción ⚠️ Cybersecurity and production warning

Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, APIs externas, portales con login, datos sensibles, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.

This exercise is for learning and testing only. Do not run scripts against real data, production environments, external APIs, login portals, sensitive data, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.

Objetivo del ejercicio

Exercise objective

Convertir un PDF escaneado a texto estructurado tipo Markdown y preparar la salida para revisión y extracción tabular.

Convert a scanned PDF into structured Markdown text and prepare the output for review and table extraction.

Datos sintéticos

Synthetic data

documentotiposalida
factura_proveedor.pdffactura escaneadamarkdown
expediente_001.pdfexpediente físicotexto estructurado

Ejemplo base

Base example

from docling.document_converter import DocumentConverter

converter = DocumentConverter()
resultado = converter.convert("factura_proveedor.pdf")
print(resultado.document.export_to_markdown())

Resultado esperado

Expected result

campovalor
VendorABC Supplies
InvoiceINV-1001
Total2450.75
StatusNeeds review

Script completo

Complete script

# ==========================================================
# Python Advanced Topic 12
# Extracting Scanned Tables from PDFs
# ==========================================================

# pip install docling pandas

from docling.document_converter import DocumentConverter
from pathlib import Path

input_pdf = Path("factura_proveedor.pdf")
output_md = Path("factura_proveedor_extracted.md")

converter = DocumentConverter()
resultado = converter.convert(str(input_pdf))

markdown_text = resultado.document.export_to_markdown()
output_md.write_text(markdown_text, encoding="utf-8")

print("PDF conversion completed")
print(f"Output markdown: {output_md}")
print(markdown_text[:500])

Salida esperada en consola

Expected console output

PDF conversion completed
Output markdown: factura_proveedor_extracted.md
# Invoice
Vendor: ABC Supplies
Invoice Number: INV-1001
Total: 2450.75

Aplicaciones reales

Real-world applications

  • Extraer facturas escaneadas.
  • Digitalizar expedientes físicos.
  • Preparar documentos para revisión humana.
  • Convertir PDFs a Markdown o texto estructurado.
  • Extract scanned invoices.
  • Digitize physical case files.
  • Prepare documents for human review.
  • Convert PDFs into Markdown or structured text.

Recomendaciones

Recommendations

  • Validar manualmente documentos críticos.
  • No asumir 100% de precisión en OCR.
  • Conservar el PDF original.
  • Marcar documentos con baja calidad para revisión.
  • Manually validate critical documents.
  • Do not assume 100% OCR accuracy.
  • Keep the original PDF.
  • Flag low-quality documents for review.

Valor del tópico

Topic value

La extracción avanzada reduce el trabajo manual con PDFs escaneados, pero la revisión humana sigue siendo esencial cuando hay impacto financiero o legal.

Advanced extraction reduces manual work with scanned PDFs, but human review remains essential when financial or legal impact exists.