Documentos chilenos y planillas Excel convertidos a JSON confiable
Las APIs globales de extracción entienden mal el formato chileno. DocExtract lee primero lo determinista (el XML del DTE, la capa de texto del PDF, el CSV o Excel del banco) y recurre a OCR o IA solo como respaldo. Cada campo trae su confianza y de dónde salió.
Qué resuelve
| Endpoint | Entrada | Salida |
|---|---|---|
POST /v1/extraer/factura | XML DTE, PDF o imagen de factura, boleta, nota de crédito | RUT y razón social de emisor y receptor, folio, fecha, neto, exento, IVA, total, ítems, timbre electrónico y validaciones cruzadas (RUT válidos, neto + IVA = total, IVA 19 %). |
POST /v1/extraer/cartola | PDF, CSV o XLSX exportado del banco | Movimientos normalizados (fecha, glosa, cargo, abono, saldo) con categoría de gasto sugerida, resumen por categoría y verificación de saldos. |
POST /v1/extraer/planilla | Excel o CSV arbitrario | Encabezados, tipos de columna, fórmulas y tablas detectadas; propuesta de entidad con DDL y JSON Schema. Pensado para digitalizar planillas operativas. |
POST /v1/extraer/generico | Cualquier documento + tu esquema JSON | Los campos que definas (texto, número, fecha, RUT, lista, booleano) con confianza y ubicación. |
POST /v1/clasificar/gasto | Glosa bancaria ("COMPRA LIDER 4567") | Categoría de gasto, comercio probable y confianza. Hasta 500 glosas por llamada. |
GET /v1/trabajos/{id} | Trabajos asíncronos para archivos grandes | Estado y resultado; el archivo se elimina a las 24 h. |
Ejemplo: factura electrónica
# multipart/form-data (recomendado) ...
curl -X POST https://docs.onecore360.cl/v1/extraer/factura \
-H "X-API-Key: $ONECORE_API_KEY" -F "archivo=@factura.xml"
# ... o JSON con base64
curl -X POST https://docs.onecore360.cl/v1/extraer/factura \
-H "X-API-Key: $ONECORE_API_KEY" -H "Content-Type: application/json" \
-d "{\"archivo_base64\": \"$(base64 -w0 factura.pdf)\", \"nombre_archivo\": \"factura.pdf\"}"import requests
with open("factura.pdf", "rb") as archivo:
r = requests.post(
"https://docs.onecore360.cl/v1/extraer/factura",
headers={"X-API-Key": ONECORE_API_KEY},
files={"archivo": ("factura.pdf", archivo, "application/pdf")},
timeout=60,
)
datos = r.json()
print(datos["metodo"], datos["confianza_global"])
for nombre, campo in datos["campos"].items():
print(nombre, campo["valor"], campo["confianza"], campo["ubicacion"])
print([v for v in datos["validaciones"] if not v["ok"]])const form = new FormData();
form.append("archivo", new Blob([bytes], {type: "application/pdf"}), "factura.pdf");
const r = await fetch("https://docs.onecore360.cl/v1/extraer/factura", {
method: "POST", headers: {"X-API-Key": process.env.ONECORE_API_KEY}, body: form
});
const datos = await r.json();
console.log(datos.metodo, datos.campos.total.valor, datos.validaciones);{
"tipo_documento": "factura_electronica", "tipo_dte": 33, "metodo": "xml_dte",
"campos": {
"rut_emisor": {"valor": "76086428-5", "confianza": 1.0, "ubicacion": "xml:Documento[0]/Encabezado/Emisor/RUTEmisor", "metodo": "xml_dte"},
"folio": {"valor": 1234, "confianza": 1.0, "ubicacion": "xml:Documento[0]/Encabezado/IdDoc/Folio"},
"neto": {"valor": 1000000, ...}, "iva": {"valor": 190000, ...}, "total": {"valor": 1190000, ...}
},
"items": [{"linea": 1, "descripcion": "Servicio de mantención", "cantidad": 2, "precio_unitario": 500000, "monto": 1000000, "ubicacion": "xml:Documento[0]/Detalle[1]"}],
"validaciones": [{"regla": "rut_emisor_valido", "ok": true}, {"regla": "neto_mas_iva_mas_exento_igual_total", "ok": true, "diferencia": 0}],
"confianza_global": 1.0,
"proveedor_ia": {"disponible": false, "nota": "..."},
"privacidad": {"archivo_almacenado": false, "retencion_horas": 0}
}
Ejemplo: clasificar una glosa
curl -X POST https://docs.onecore360.cl/v1/clasificar/gasto -H "X-API-Key: $ONECORE_API_KEY" \
-H "Content-Type: application/json" -d '{"glosa": "COMPRA LIDER 4567", "monto": -45990}'
{"glosa": "COMPRA LIDER 4567", "categoria": "supermercado", "nombre": "Supermercado y almacén",
"confianza": 0.8, "coincidencias": ["lider"], "comercio_probable": "Lider"}
Diseñada para datos sensibles
Determinista primero
XML del DTE, texto del PDF y archivos tabulares antes que cualquier OCR. Resultados reproducibles y auditables.
Privacidad
En modo síncrono el archivo se procesa en memoria. En modo asíncrono se guarda cifrado y se elimina a las 24 horas. Nunca registramos el contenido en logs.
IA opcional
Amazon Textract y Bedrock están integrados pero desactivados por defecto. Se activan por cliente cuando necesitas leer imágenes o PDF escaneados.
Planes
Ver planes y precios. Los planes Básico, Pro y Empresa incluyen procesamiento asíncrono y archivos más grandes.