| --- |
| language: |
| - es |
| license: apache-2.0 |
| base_model: unsloth/DeepSeek-OCR-2 |
| tags: |
| - ocr |
| - receipt |
| - invoice |
| - vision |
| - fine-tuned |
| - unsloth |
| - lora |
| - json-extraction |
| pipeline_tag: image-text-to-text |
| --- |
| |
| # DeepSeek OCR LoRA — Extracción estructurada de tickets y facturas |
|
|
| ## Descripción |
|
|
| Este modelo es un **LoRA fine-tuning** sobre [`unsloth/DeepSeek-OCR-2`](https://huggingface.co/unsloth/DeepSeek-OCR-2), entrenado para analizar imágenes de **tickets de compra, recibos y facturas** y devolver su contenido en formato **JSON estructurado**. |
|
|
| El objetivo principal del proyecto fue académico: estudiar el comportamiento de un modelo de visión multimodal al ser adaptado para extraer información con una estructura de salida fija. |
|
|
| El modelo está diseñado principalmente para documentos en **español**. |
|
|
| --- |
|
|
| ## Salida esperada |
|
|
| Dado una imagen de ticket o factura, el modelo devuelve un JSON con la siguiente estructura: |
|
|
| ```json |
| { |
| "comercio": "Nombre del establecimiento", |
| "fecha": "DD/MM/AAAA", |
| "cif": "B12345678", |
| "items": [ |
| { |
| "descripcion": "Nombre del producto", |
| "cantidad": 2, |
| "precio": 3.50 |
| } |
| ], |
| "precio_total": 7.00 |
| } |
| ``` |
|
|
| --- |
|
|
| ## Uso |
|
|
| Este modelo requiere cargar el modelo base por separado y aplicar el LoRA encima: |
|
|
| ```python |
| from transformers import AutoModelForCausalLM, AutoProcessor |
| from peft import PeftModel |
| |
| BASE_MODEL_ID = "unsloth/DeepSeek-OCR-2" |
| LORA_ID = "Lacax/deepseek_ocr_lora" |
| |
| processor = AutoProcessor.from_pretrained(BASE_MODEL_ID) |
| model = AutoModelForCausalLM.from_pretrained(BASE_MODEL_ID) |
| model = PeftModel.from_pretrained(model, LORA_ID) |
| ``` |
|
|
| > **Nota:** El repo del LoRA es privado. Se requiere un `HF_TOKEN` con acceso al repo `Lacax/deepseek_ocr_lora`. El modelo base `unsloth/DeepSeek-OCR-2` es público. |
| |
| --- |
| |
| ## Datos de entrenamiento |
| |
| - **Tipo:** Imágenes de tickets y facturas reales (fotografías propias) |
| - **Tamaño:** ~100 imágenes |
| - **Formato:** Cada imagen asociada a su JSON ground truth con la estructura descrita arriba |
| - **Idioma:** Español |
| - **Origen:** Dataset propio, no publicado |
| |
| --- |
| |
| ## Estadísticas de entrenamiento |
| |
| | Parámetro | Valor | |
| |------------------------|-------------| |
| | Épocas completadas | 3 | |
| | Duración total | ~4607 s (~77 min) | |
| | Muestras / segundo | 0.40 | |
| | Pérdida final (train) | 0.0399 | |
| | Framework | Unsloth + PEFT | |
| | Plataforma | RunPod (GPU cloud) | |
| |
| --- |
| |
| ## Limitaciones |
| |
| - Dataset pequeño (~100 imágenes): el modelo puede no generalizar bien a formatos de ticket muy distintos a los usados en entrenamiento. |
| - Entrenado únicamente con documentos en español; rendimiento no garantizado en otros idiomas. |
| - Proyecto de carácter académico/experimental, no validado en producción. |
| - La pérdida baja de entrenamiento (0.04) puede indicar cierto sobreajuste al dataset propio. |
| |
| --- |
| |
| ## Modelo base |
| |
| - [`unsloth/DeepSeek-OCR-2`](https://huggingface.co/unsloth/DeepSeek-OCR-2) |
| |
| --- |
| |
| ## Autor |
| |
| **Jonatan Thorpe Plaza** — Proyecto de estudio personal sobre fine-tuning de modelos de visión multimodal. |