Motivación
El trait OcrProvider (src/text/ocr/mod.rs, process_image/process_image_regions, Send+Sync) es pluggable, pero la única implementación real es Tesseract (text/tesseract_provider.rs). Azure/AWS se mencionan en el doc-comment sin implementar. No hay backend VLM.
Tesseract falla en escaneos de layout complejo, frecuentes en corpus RAG. Referencia: Kreuzberg soporta OCR vía VLM (GPT-4o/Claude/Gemini/Ollama).
Propuesta
Implementar un OcrProvider que delegue en un VLM. No es cambio arquitectónico —es una impl más del trait existente.
- Backend configurable por endpoint/modelo (compatible con proveedores OpenAI-like y Anthropic).
- Encaja con que el ecosistema Tessera ya tendrá acceso a APIs LLM.
Alcance
- Nuevo provider implementando
OcrProvider.
- Manejo de credenciales fail-safe (sin key → denegar/return error, nunca fallback silencioso inseguro).
- Tests con imagen de texto conocido verificando el texto reconocido exacto (mock del transporte HTTP para no depender de red en CI; contenido verificado, no smoke).
Valor: medio-alto para corpus escaneado. Esfuerzo: medio.
Motivación
El trait
OcrProvider(src/text/ocr/mod.rs,process_image/process_image_regions, Send+Sync) es pluggable, pero la única implementación real es Tesseract (text/tesseract_provider.rs). Azure/AWS se mencionan en el doc-comment sin implementar. No hay backend VLM.Tesseract falla en escaneos de layout complejo, frecuentes en corpus RAG. Referencia: Kreuzberg soporta OCR vía VLM (GPT-4o/Claude/Gemini/Ollama).
Propuesta
Implementar un
OcrProviderque delegue en un VLM. No es cambio arquitectónico —es una impl más del trait existente.Alcance
OcrProvider.Valor: medio-alto para corpus escaneado. Esfuerzo: medio.