API DocExtract · https://docs.onecore360.cl

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

EndpointEntradaSalida
POST /v1/extraer/facturaXML DTE, PDF o imagen de factura, boleta, nota de créditoRUT 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/cartolaPDF, CSV o XLSX exportado del bancoMovimientos normalizados (fecha, glosa, cargo, abono, saldo) con categoría de gasto sugerida, resumen por categoría y verificación de saldos.
POST /v1/extraer/planillaExcel o CSV arbitrarioEncabezados, tipos de columna, fórmulas y tablas detectadas; propuesta de entidad con DDL y JSON Schema. Pensado para digitalizar planillas operativas.
POST /v1/extraer/genericoCualquier documento + tu esquema JSONLos campos que definas (texto, número, fecha, RUT, lista, booleano) con confianza y ubicación.
POST /v1/clasificar/gastoGlosa 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 grandesEstado 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.