- Es una herramienta web que reduce el trabajo de transcribir imágenes de documentos a texto y luego reorganizarlas, convirtiéndolas en Markdown estructurado
- La entrada web actual se centra en la carga de imágenes, y se informa que el soporte para PDF estará disponible pronto
- El servicio funciona sobre la base del paquete npm llama-ocr y Together AI
- En JavaScript, se puede pasar
filePath y TOGETHER_API_KEY a la función ocr para obtener el resultado en Markdown
- Al admitir tanto cargas desde la web como llamadas desde código, permite probar la conversión de imágenes de documentos según flujos manuales o de desarrollo
Convertir documentos en imagen a Markdown
- LlamaOCR.com es una herramienta que convierte documentos cargados a Markdown
- La página web indica “Upload an image to turn it into structured markdown” y genera Markdown estructurado a partir de la carga de una imagen
- El soporte para PDF aparece como “soon”, por lo que el alcance actual está centrado en imágenes
Cómo usarlo desde código
- Con el paquete npm llama-ocr, se puede ejecutar OCR desde código JavaScript
import { ocr } from 'llama-ocr';
const markdown = await ocr({
filePath: './trader-receipt.jpg',
apiKey: process.env.TOGETHER_API_KEY
});
- El ejemplo coloca la ruta del archivo de imagen en
filePath y pasa la variable de entorno TOGETHER_API_KEY en apiKey
- El servicio se basa en llama-ocr y Together AI
1 comentarios
Opiniones en Hacker News
Soy quien creó llama-ocr. Gracias por compartirlo y por la buena recepción. Necesitaba una API de OCR simple, así que la hice a principios de esta semana; parsea imágenes a Markdown estructurado usando Llama 3.2 Vision, alojado en Together.ai.
También está disponible como paquete npm. Planeo agregar funciones como parseo de PDF y respuestas JSON; si tienen preguntas, intentaré responderlas.
Me pregunto si una transformación tan grande como esa es un comportamiento esperado o deseable. Como la salida a veces es una lista con viñetas y otras veces una tabla, el procesamiento automático posterior se vuelve un poco más difícil.
Me pregunto si también contemplaste ese caso de uso.
Quisiera saber qué tipos de errores comete en comparación con los sistemas de OCR existentes.
Esto no es más que enviar la imagen a Llama 3.2 Vision y pedirle que lea el texto.
Como cualquier otra salida de un LLM, es vulnerable a alucinaciones. No está leyendo formas de letras a partir de píxeles, sino que decide el texto mientras describe la imagen con base en imágenes y captions que aprendió. En especial, si algo es difícil de leer, puede inventarse palabras por completo.
Se ve genial. Últimamente hago mucho OCR, así que me alegra ver una herramienta nueva en este campo. El líder actual en PDF→Markdown probablemente sea Nougat de Facebook[1], y me gustaría conectarlo con DSPy para comparar cuál funciona mejor con libros de filosofía.
El proyecto Zerox[2] de la startup enlazada por este repositorio también se ve bien y, como mínimo, su promoción es mucho más pulida que la de Nougat. Si pasa por aquí alguien realmente experto, me gustaría recibir correcciones o consejos.
Tengo dos dudas. 1) Me pregunto qué es Together.ai y si este modelo es open source. El sitio web parece un servicio de hosting, y la página de “Custom Models”[3] se ve más como fine-tuning personalizado que como entrenamiento de modelos propietarios propios. Parece que tienen un perfil en HuggingFace, pero no queda claro si de verdad es de ellos https://huggingface.co/TogetherAI
2) En GitHub dice “hosted demo”, pero la parte alojada parece ser solo una WebGUI pequeña y prolija. Me pregunto si eso significa que esta función, ahora y en el futuro, solo podrá usarse mediante llamadas a la API.
P. D.: En el navegador de escritorio, los enlaces del header están rotos y no se dispara el onClick.
[1] https://facebookresearch.github.io/nougat/
[2] https://github.com/getomni-ai/zerox
[3] https://www.together.ai/products#custom-models
Noté algo peculiar. Subí un webcómic como ejemplo y, aunque todos los diálogos estaban en mayúsculas, la salida mezcló de forma inconsistente mayúsculas/minúsculas tipo oración y tipo título según el panel.
También probé un problema para el que realmente querría usar OCR. Tengo diapositivas viejas que necesitan digitalizarse y la mayoría tienen etiquetas; al subir una, la describió como si pareciera una diapositiva o un fotograma de película, vieja y amarillenta, con un recorte rectangular oscuro en el centro, y dijo que el texto era “Once Upon a Time” y el número “1069”.
La descripción innecesariamente repetitiva de la diapositiva ya es un problema, pero el texto real no estaba en cursiva ni nada: era “Once Uniquitous.”, y el número era 106g. Era muy claramente una ‘g’, no un ‘9’.
Lo interesante es que podría ser un ejemplo de sesgo del modelo. Vio la diapositiva como algo demasiado antiguo y terminó alucinando un título totalmente cliché; además, el rectángulo negro era resultado de iluminarla desde el frente para que no se vieran las partes transparentes, y eso se le pasó.
Además, parece que la API en sí tiene límites de tamaño de archivo o resolución que no están documentados.
Hace poco usé llama3.2-vision para procesar hojas de pujas en papel de una subasta benéfica, y fue bastante preciso incluso con letra manuscrita bastante mala. Me gustaría usarlo también en el evento del año que viene.
Dicho eso, es bastante molesto lo difícil que es hacer que genere CSV de forma consistente. ChatGPT y Gemini parecen mejores en esa parte, aunque no llegué a automatizarlo.
La escala es de unas 100 páginas de hojas de pujas, así que un poco de limpieza manual está bien. Sin duda es mejor que quemar horas de voluntarios.
https://github.com/philips/paper-bidsheets
No es gratis, pero la precisión en documentos manuscritos está entre las mejores. Soy el fundador, así que estoy sesgado, pero el nivel de precisión actual realmente me entusiasma. Para un proyecto de 100 páginas, solo costaría 12 dólares y podría ahorrar tiempo.
Últimamente hice bastante OCR, sobre todo para digitalizar texto en fotos familiares. Los modelos de OCR comunes son pésimos, y los LLM lo hicieron mucho mejor. Entre los modelos que probé, Gemini Flash fue abrumadoramente superior, pero aun así tuvo suficientes fallos y alucinaciones como para que fuera más rápido escribirlo a mano
Es frustrante que parezca que casi funciona, pero no. Esta herramienta parece peor. A veces responde solo con el texto, y otras veces da una descripción completa como “The image is a scanned document with handwritten text...”. Esperaba que hubiera algo como un fine-tuning que pudiera superar a Gemini Flash; habría ahorrado mucho tiempo, así que es una lástima
convert -density 76 input.pdf output-%d.pnghttps://github.com/philips/paper-bidsheets
Flash suena interesante; también me da curiosidad qué LLM probaron
Recortar las imágenes para dejar solo las partes con texto, quitar los bordes y aumentar el contraste ayudó muchísimo. Escribí esto en 2015, pero sigue aplicando muy bien incluso para GPT: https://www.danvk.org/2015/01/07/finding-blocks-of-text-in-a...
Para GPT fue mejor darle unos pocos párrafos o menos por vez, en lugar de una página completa. Cuanto más corto el texto, menor la probabilidad de alucinaciones
El OCR del que se habló recientemente era pésimo, y esperaba que esto fuera mejor. ChatGPT 4o funcionó bien cuando pegaba imágenes individuales en el chat, pero todavía no probé la API. No sé cuánto costaría procesar 6500 fotos, y aunque muchas están en blanco, tampoco tengo una forma fácil de filtrarlas
Todavía no es bueno devolviendo la ubicación del texto, pero en mis pruebas su rendimiento de OCR fue increíble
Me pregunto si esto debería ser un post de “Show HN”. Parece simplemente un frontend, y tampoco veo nada que lo vincule directamente con Llama en el nombre. Tal vez together.ai haya proporcionado el espacio en la nube
Probé una frase generada colocando 500 círculos con un algoritmo genético, y dibujada con círculos físicos reales
https://www.instagram.com/marekgibney/p/BiFNyYBhvGr/
Curiosamente, reconoce bien los círculos, pero no ve la frase. Respondió algo como que “la imagen no contiene texto ni elementos que puedan representarse en Markdown; es solo una composición visual de círculos y no hay información que traducir a Markdown”
Como las respuestas no son determinísticas, también probé varias veces con la imagen original, pero nunca tuvo éxito. En cambio, todos los efectos de filtro pasabajos que apliqué funcionaron con alta tasa de éxito
https://imgur.com/q7Zd7fa
Desde lejos es más fácil de leer
La forma en que usaron el algoritmo genético está bastante buena. Me gustaría ver el código, o al menos la función de recompensa
Me dio risa. Le pasé 3 capturas de pantalla de un documento largo y lo procesó relativamente bien, pero al corregirlo vi que la IA había inventado un párrafo que no estaba en el original
Probablemente, por la naturaleza de las capturas, algunas oraciones o párrafos quedaron cortados a la mitad, y eso activó la tendencia del LLM a rellenar los espacios en blanco. No pudo dejar un párrafo inconcluso tal cual, e incluso agregó un breve párrafo de conclusión que no existía en absoluto en el documento original
Probé con un escaneo viejo del diagrama esquemático de una motherboard Asus P3B-F de 1997
Solo extrajo parte del texto del bloque de título, por ejemplo el nombre del proyecto y la fecha, y aun con una tipografía clara mezcló todos los 8/B y 1/I
La información realmente útil terminó convertida en algo como “Tables / Table 1: [Insert table 1 here] / Other Elements / [Insert other elements here]”