Pipelines Documentales
1
contrato_
escaneado.pdf
escaneado.pdf
→
Nutrient
OCR API
OCR API
→
PDF
buscable
buscable
→
Indexado
en LegalFlow
en LegalFlow
bash — OCR pipeline
# Pipeline 1: OCR — Contratos escaneados → PDF buscable (español) curl -X POST https://api.nutrient.io/build \ -H "Authorization: Bearer $NUTRIENT_API_KEY" \ -F "scanned.pdf=@contratos_escaneados/arrendamiento_2026_001.pdf" \ -F 'instructions={"parts":[{"file":"scanned.pdf"}],"actions":[{"type":"ocr","language":"spanish"}]}' \ -o "output/arrendamiento_2026_001_ocr.pdf" # Resultado: PDF con capa de texto → búsqueda + Ctrl+F + indexación LegalFlow # Soporta 100+ idiomas: spa, eng, fra, deu, por, ita, chi_sim...
2
contrato
.docx
.docx
→
Nutrient
Convert
Convert
→
PDF
archivable
archivable
→
Storage
LegalFlow
LegalFlow
bash — DOCX to PDF
# Pipeline 2: DOCX → PDF (preserva formato, fuentes, tablas) curl -X POST https://api.nutrient.io/build \ -H "Authorization: Bearer $NUTRIENT_API_KEY" \ -F "document.docx=@contratos_draft/contrato_servicios_TechCorp.docx" \ -F 'instructions={"parts":[{"file":"document.docx"}]}' \ -o "output/contrato_servicios_TechCorp.pdf" # También soporta: XLSX, PPTX, HTML, ODT, RTF, imágenes JPG/PNG/TIFF...
3
borrador
_v2.pdf
_v2.pdf
→
Nutrient
Watermark
Watermark
→
PDF con
BORRADOR
BORRADOR
→
Envío
revisión
revisión
bash — Watermark pipeline
# Pipeline 3: Marca de agua diagonal en borradores curl -X POST https://api.nutrient.io/build \ -H "Authorization: Bearer $NUTRIENT_API_KEY" \ -F "document.pdf=@contratos_draft/arrendamiento_v2_borrador.pdf" \ -F 'instructions={ "parts":[{"file":"document.pdf"}], "actions":[{ "type":"watermark", "text":"BORRADOR — NO VÁLIDO PARA FIRMA", "fontSize":48, "opacity":0.3, "rotation":-45, "fontColor":"#CC0000" }] }' \ -o "output/arrendamiento_v2_borrador_MARCADO.pdf"
4
contrato
con PII
con PII
→
Nutrient
Redact
Redact
→
PDF
anonimizado
anonimizado
→
Comparte
con terceros
con terceros
bash — PII Redaction pipeline
# Pipeline 4: Redacción PII multi-patrón (RGPD compliant) curl -X POST https://api.nutrient.io/build \ -H "Authorization: Bearer $NUTRIENT_API_KEY" \ -F "document.pdf=@contratos/contrato_cliente_con_pii.pdf" \ -F 'instructions={ "parts":[{"file":"document.pdf"}], "actions":[ {"type":"redaction","strategy":"preset","strategyOptions":{"preset":"email-address"}}, {"type":"redaction","strategy":"preset","strategyOptions":{"preset":"international-phone-number"}}, {"type":"redaction","strategy":"preset","strategyOptions":{"preset":"credit-card-number"}}, {"type":"redaction","strategy":"regex","strategyOptions":{"regex":"\\b[0-9]{8}[A-Za-z]\\b"}}, {"type":"redaction","strategy":"regex","strategyOptions":{"regex":"\\b[XYZ][0-9]{7}[A-Za-z]\\b"}} ] }' \ -o "output/contrato_ANONIMIZADO_ddmmyyyy.pdf" # Redacta: emails, teléfonos, tarjetas, DNI español, NIE
5
contrato
aprobado
aprobado
→
Nutrient
Sign CMS
Sign CMS
→
PDF con
firma digital
firma digital
→
Envío
al cliente
al cliente
bash — Digital signature
# Pipeline 5: Firma digital CMS (self-signed) — contrato listo para envío curl -X POST https://api.nutrient.io/build \ -H "Authorization: Bearer $NUTRIENT_API_KEY" \ -F "document.pdf=@contratos_aprobados/contrato_final_TechCorp_2026.pdf" \ -F 'instructions={ "parts":[{"file":"document.pdf"}], "actions":[{ "type":"sign", "signatureType":"cms", "signerName":"LegalFlow Certified", "reason":"Aprobado y firmado digitalmente — LegalFlow v2.4" }] }' \ -o "output/contrato_final_TechCorp_2026_FIRMADO.pdf" # El PDF resultante incluye sello CMS verificable en Adobe Acrobat / PDF readers
💰 Estimación de Costes API — Mensual
| Pipeline | Docs/mes | Coste est. |
|---|---|---|
| OCR digitalización | 1.200 | ~$18 |
| Conversión DOCX→PDF | 900 | ~$9 |
| Watermark borradores | 600 | ~$5 |
| Redacción PII | 1.200 | ~$14 |
| Firma digital CMS | 600 | ~$8 |
| TOTAL (4.500 docs) | 4.500 | ~$54/mes |
ROI: 45h × 15 despachos × $40/h = $27.000/mes ahorro laboral vs $54 API cost
⚙️ Operaciones Disponibles en Nutrient DWS
-
Conversión de Formatos PDF, DOCX, XLSX, PPTX, HTML, JPG, PNG, TIFF, SVG, ODT, RTF
-
OCR Multi-idioma 100+ idiomas: español, inglés, francés, alemán, chino, árabe...
-
Extracción de Tablas PDF → XLSX con tablas estructuradas preservadas
-
Redacción PII 13 presets (SSN, email, CC, teléfono) + regex personalizado
-
Marca de Agua Texto/imagen con opacidad, rotación y posición personalizados
-
Firma Digital CMS Self-signed con sello verificable en Acrobat y otros PDF readers
-
Rellenado de Formularios PDF fillForm con key-value mapping para formularios estructurados
🤖 Script Orquestador — Procesamiento Batch Diario
bash — legalflow-batch-processor.sh
#!/bin/bash # LegalFlow × Nutrient — Batch Processor Diario # Ejecuta: cron 0 8 * * * /scripts/legalflow-batch-processor.sh set -euo pipefail NUTRIENT_API_KEY="${NUTRIENT_API_KEY:?Error: NUTRIENT_API_KEY no definida}" BASE_URL="https://api.nutrient.io/build" INBOX="/data/legalflow/inbox" OUTPUT="/data/legalflow/processed" LOG="/var/log/legalflow/$(date +%Y%m%d).log" process_doc() { local file="$1" type="$2" instructions="$3" out="$4" echo "[$(date +%H:%M:%S)] Processing $type: $(basename $file)" | tee -a "$LOG" curl -s -X POST "$BASE_URL" \ -H "Authorization: Bearer $NUTRIENT_API_KEY" \ -F "document=@$file" \ -F "instructions=$instructions" \ -o "$out" && echo " ✓ OK → $out" || echo " ✗ ERROR" } # P1: OCR — Escaneados find "$INBOX/scanned" -name "*.pdf" | while read f; do process_doc "$f" "OCR" \ '{"parts":[{"file":"document"}],"actions":[{"type":"ocr","language":"spanish"}]}' \ "$OUTPUT/ocr/$(basename $f .pdf)_ocr.pdf" done # P2: Conversión DOCX→PDF find "$INBOX/drafts" -name "*.docx" | while read f; do process_doc "$f" "DOCX→PDF" \ '{"parts":[{"file":"document"}]}' \ "$OUTPUT/archive/$(basename $f .docx).pdf" done # P4: Redacción PII — Due Diligence find "$INBOX/due_diligence" -name "*.pdf" | while read f; do process_doc "$f" "REDACT-PII" \ '{"parts":[{"file":"document"}],"actions":[ {"type":"redaction","strategy":"preset","strategyOptions":{"preset":"email-address"}}, {"type":"redaction","strategy":"preset","strategyOptions":{"preset":"international-phone-number"}}, {"type":"redaction","strategy":"regex","strategyOptions":{"regex":"\\b[0-9]{8}[A-Za-z]\\b"}} ]}' \ "$OUTPUT/anonymized/$(basename $f .pdf)_ANON.pdf" done echo "[$(date)] Batch completado. Revisa $LOG para detalles."