Hola, soy Migsar

Extracción y traducción de palabras con AI

Migsar Navarro - 2025-08-22

#Español
#Opinión
#Agentes AI
#Extracción de datos
#Traducción

Recientemente, mientras trabajaba en un proyecto, descubrí lo que parecía ser el problema ideal para intentar resolver con la inteligencia artificial, en particular, con los modernos asistentes de AI que están de moda, algo sencillo que debería tomar una par de días, como máximo. Extraer unas palabras de un documento en PDF y traducirlas. Aquí estoy un mes después, aún sin terminar ese proyecto y escribiendo este post por dos motivos, el primero, reflexionar al respecto, el segundo, ayudar a otros que estén en situaciones semejantes al compartir lo que he aprendido.

Antecedentes

Quiero compartir un poco de contexto, porque puede que no sea la persona que estén esperando que escriba un artículo de este estilo, o sobre este tema. No soy tan joven, tengo 41 años y aunque me gusta la tecnología no me considero ni tan ingenuo ni tan optimista como hace 20 años, tengo mi forma de ser bastante definida y mis principios éticos y morales bastante claros, muchas veces no son compatibles con las tendencias y es algo sobre lo que espero escribir algún día. Me interesa la eficiencia y el desarrollo tecnológico, pero no me gustan los escenarios post-apocalipticos que tanto emocionan a muchos, de hecho, eso me ha llevado a casi dejar de consumir video, literatura, videojuegos, y muchas otras formas de contenido relacionadas con lo que considero una suave imposición de imaginarios.

Como estoy en el medio de la tecnología y las startups empecé a experimentar con la inteligencia artificial desde hace mucho, hace unos años cuando salió co-pilot de Microsoft lo intenté usar un par de meses, pero sentí que en lugar de alinearse conmigo y funcionar como un compañero de código era como tener un jefe de producto que siempre encontraba la forma de hacer las cosas rápido y sólo lo indispensable, casi micro-management. Yo quería un código bonito y del que estuviera orgulloso pero mi compañero de AI estaba pensando en siempre ir más rápido y sólo orientado en los resultados, siempre siguiendo patrones que son muy comunes pero sin darse cuenta, aunque lo corrigiera una y otra vez, que el hecho de aparecer mucho en github no significaba que me gustaran o que los aprobara.

También intenté aprender sobre data science y machine learning varias veces y por uno u otro motivo nunca tuve éxito. En general, creo que el problema es que aunque me parece muy interesante los resultados que se han obtenido, no estoy muy convencido del enfoque que tiene hacia los aspectos humanos de la tecnología. Hace mucho que me distancié de la academia y nunca me he arrepentido, me parece que es la última de las religiones, todo esto sale un poco del tema del post, pero me parece muy importante decirlo, quizá ayude a algún lector a no perder el tiempo con el resto del post.

Sin embargo, ya me ha tocado perderme un par de cosas y después tener que adoptarlas de una forma menos ventajosa, por lo que me obligué a sentarme una vez más y explorar las posibilidades asociadas a los LLMs. Empecé a usar un poco más Perplexity, Claude, y DeepSeek, también abrí una cuenta de LeChat, de Mistral, aunque debo de confesar que no he tenido tiempo de usarla mucho porque me gustaron más los resultados de las otras, aún no he usado ChatGPT mas que a través de productos intermediarios. También he usado un par de asistentes/agentes de código y aunque me parece que han mejorado mucho, aún no siento que me hagan mucho más productivo como programador, pero eso es tema para otro post.

La idea

He estado estudiando mandarín por un par de años, siempre por mi cuenta, empecé por un capricho y me he ido apasionando con el tema. Existen unos exámenes que son los más conocidos para probar el dominio de la lengua, y en internet es relativamente sencillo encontrar las listas de palabras y caracteres de cada nivel, sin embargo, las fuentes que encontré tenían sólo la traducción de las palabras a inglés, además, quería confirmar que las palabras y la pronunciación fueran las correctas. Existe un documento oficial que es un PDF, pero sólo tiene las palabras y la pronunciación, y para colmo, no permite copiar y pegar las listas.

Mi idea inicial era demasiado buena para funcionar, o demasiado ingenua: iba a usar la versión gratuita para extraer del documento en PDF la lista de palabras y su pronunciación, de paso le iba a pedir al agente que hiciera la traducción. Era un documento de 68 páginas con la lista de 5636 palabras y su pronunciación usando pinyin de los niveles 7, 8, y 9 del HSK.

Mi prompt inicial era el siguiente:

Extract all the words from the following images with their respective numbers and pinyin pronunciation. Generate a JSON with an array that contain each word as an object with the following keys "number", "chinese", "pinyin", "english", "spanish". "english" and "spanish" must be the word translation and "number" should be converted to a number.

Obstáculos

El documento era demasiado grande

El primer obstáculo surgió incluso antes de comenzar, el documento era demasiado pesado y las versiones gratuitas no permitían usarlo. Por suerte la solución también era muy sencilla, partir con una herramienta de línea de comando el pdf grande en un pdf por cada página, no era ideal, porque ahora tendría que subir varios documentos y repetir el proceso muchas veces, pero tampoco me parecía un problema tan grave. La verdad es que ya tenía en mente que terminaría pagando, pero quería hacer unas pruebas antes de decidir que servicio usar, por lo que no me pareció mala idea empezar con una sola página.

PDF es un formato ambiguo

El segundo obstáculo apareció inmediatamente, PDF era un mal formato pues es ambiguo, al final PDF ofrece muchas libertades, por lo que la extracción muchas veces depende de los trucos que se usaron para generar el documento con la disposición de elementos deseada, además se pueden incluir imágenes y resulta que entonces el documento es en realidad una imágen de mapa de bits, y no texto. La solución fue usar ImageMagick para convertir todas las páginas a imágenes.

La extracción de texto de imágenes resultaba mucho más fácil y de mejor calidad, supongo que la identificación de caracteres es menos precisa que simplemente usar los que ya existen, pero en este caso si intentaba extraer del pdf terminaba no sólo con texto de mala calidad sino que además desordenado, creo que usaron una herramienta que grava cada palabra como una imagen.

Límites de las versiones gratuitas

Los servicios de Claude y Perplexity me parecieron relativamente buenos pero extremadamente limitados. DeepSeek en cambio me pareció bastante usable en la versión gratuita, que actualmente es la única, a menos que se use el API. En ambos casos había errores ocasionales, en los caracteres o en el orden, a veces terminaba de hacer las traducciónes y se había perdido la correspondencia entre palabra y pronunciación o faltaba una entrada de la lista.

Terminé de hacer la extracción con DeepSeek que me permitía avanzar de seis en seis páginas. Lamentablemente por un error estúpido (mío) perdí muchos de los datos, además sólo había sido extracción, no lo había traducido porque aumentaba el número de errores.

Decidí hacer todo de nuevo pero ahora con el API de Claude. Mi decisión se basó en una cosa particular, el hecho de que Anthropic ofrece un API de archivos para no tener que lidiar con las imágenes en los requests, algo que me pareció muy útil y que simplificaba mi proceso. Por otro lado, aunque fue un criterio con menor importancia, me pareció que siendo la idea traducir a español e inglés, Claude haría un mejor trabajo, además de que existía más información sobre uso y parece tener más funcionalidades.

Límites de los asistentes

Cuando empecé a trabajar con el API me di cuenta de que la interfaz que tienen los asistentes en la versión gratuita, para no empezar con la de paga, tiene muchísimo trabajo que no se ve para facilitar su uso. Cuando uno usa el API tiene que aprender bastante más sobre los modelos y sobre el manejo de archivos y datos, la coordinación, la validación y confirmación de los datos. Me gustó mucho que para Claude existe bastante documentación, incluso existe una academia que ofrece varios cursos gratuitosque ayudan a sacar mejor provecho de la plataforma. Sin embargo, son bastantes los detalles que ahora se deben de considerar, se vuelve más relevante lo que mencionan de prompt engineering.

En ese sentido hay una cosa que sobre la que he querido escribir, al poner un intermediario digital, es decir, una máquina, me parece que mucha gente está más abierta a sugestiones sobre cual debe de ser el formato de los datos para trabajar más eficiente que lo que estaría la gente si otro ser humano pusiera las mismas condiciones, creo que tiene que ver con la percepción de que un ser humano tendría que ser más inteligente, pero al final favorece al agente de inteligencia artificial y perjudica al ser humano.

Muchos de los problemas tienen que ver con que un prompt que funciona con el asistente no funciona con el API, no entiendo exactamente por qué. También encontré que la documentación no siempre estaba actualizada con los APIs y los modelos más recientes. Varias veces los mismos agentes de AI me daban información errónea sobre los modelos, no alucinaciones, sino información no actualizada o incompleta. Por ejemplo respecto a los tokens de salida, intenté usar haiku que es el más ligero y en teoría podía ser efectivo en términos de costo pero realmente no funcionó para la tarea, aunque separara la extracción de traducción y lo dividiera en bloques más pequeños. Al decir que no funcionó me refiero a que al hacer un balance entre costo y calidad era mucho mejor usar uno de los modelos más avanzados.

Otro problema fue el formato, uno tiene que ser bastante específico para evitar tener que hacer un parseado después. El modelo está pensado para platicar y era difícil que diera una respuesta concreta y no empezara a cantinflear. Con el API varias veces la respuesta fue “Hice lo que me pediste… aquí están los cinco primeros valores, el resto se obtiene de manera similar”, lo que resulta totalmente inútil.

Todas estas limitaciones técnicas me parecen uno de los puntos principales de escribir este post, hablar un poquito de la perspectiva o la forma de pensamiento con la que uno tiene que encuadrar el problema para poder resolverlo con estos asistentes. Creo que la mercadotecnia miente un poco respecto a esto y se venden como soluciones mágicas y universales, pero es necesario una buena cantidad de trabajo para sacarles provecho, aunque sea una forma diferente de trabajo que si se hiciera manualmente.

Dirigiendo en lugar de haciendo

Me parece que con los asistentes de AI muchas veces es más barato corregir la instrucción y repetir de lo que es corregir el producto de la instrucción, esto es algo muy interesante, al menos desde mi perspectiva. Creo que algunas personas se acostumbran a esto desde el inicio de su carrera y les cuesta menos trabajo entenderlo, pero en mi caso, lo más común fue siempre pensar que la execución era muy cara, por lo que tenía que maximizar mi análisis previo y minimizar la ejecución, parece simple, pero lo que significa es que la forma de iterar rápido con AI es casi completamente contraria a un proceso que aprendí y memoricé muy temprano en mi vida, no sólo mi carrera.

Otra consecuencia de lo anterior es el tener que pensar más en la arquitectura y menos en el problema, pues es necesario considerar la granularidad del proceso, es decir, como dividirlo en muchas tareas pequeñas y poco costosas que se puedan aplicar a partes pequeñas de datos, y también implica el tener un criterio de evaluación para estas tareas que sea menos pesado que empezar a juntar las tareas en bloques más grandes.. En mi caso tenía 68 páginas, con 5600 palabras, seguro que las podía editar y revisar manualmente, pero resultaba casi como hacer el trabajo yo mismo.

Tenía que trabajar con mi fuente de información antes de usar el modelo, podía transformala de varias formas, como dividir el pdf en páginas, convertirlas a imágenes, quitarles un watermark que tenían. Al final terminó siendo más fácil y dando mejores resultados el mandar muchos request con imágenes separadas y repetitivas de lo que juntar todo y pedirle que analizara una cantidad grande de cosas, en parte por el proceso manual de evaluación de resultados.

¿Cómo validar los resultados?

Por la forma en la que los modelos de AI funcionan, que no siempre es explícita en la respuesta que ve el usuario, al hacer el request es muy difícil saber si todo está bien, una posibilidad es validar cada request manualmente, y creo que es la forma intuitiva de abordar el problema para la mayoría, sin embargo, si la idea es ahorrarse trabajo traduciendo 5600 palabras, el tener que validarlas manualmente con todo y traducción es muy difícil y tardado. Uno no sabe lo que no sabe, y cualquiera de las alternativas obvias, es decir, asumir que todo es correcto, o asumir que todo está mal, son demasiado costosas en términos de eficiencia.

Para mejorar en este aspecto es necesario desde el inicio tener una forma de reducir las cosas que pueden estar mal o las áreas para buscar las cosas que pueden estar mal. Es importante entender que no se trata de preguntarle al sistema mismo que evalue su trabajo, sino que tiene que ser encontrar una redundancia o un método poco costoso que permita verificar los resultados.

En mi caso tenía cinco campos, un número secuencial, la palabra en mandarín, la pronunciación de la palabra, y el significado en inglés y en español. Los tres primeros correspondían a datos presentes inicialmente. Se me ocurrió que había algunas posibilidades de verificar los datos:

Oportunidades

Una cosa en la que no había pensado mucho pero que me resultó muy evidente fue ver como para este tipo de trabajo las interfaces de apoyo, que en la mayoría de los casos son aplicaciones internas en una compañía, son muy importantes. En este caso, una interfaz que me permitiera validar los datos aunque no fuera pensado para ejecutarlo con todos sino para hacer pequeñas inspecciones manuales sería muy útil, algo como un sitio web o un programa que mostrara la imagen inicial y me permitiera ver al mismo tiempo los resultados para esa parte.

Este punto en particular permite entender el por qué de la popularidad de Jupyter para python, pues permite hacer precisamente eso al tener el ambiente de desarrollo y ejecución completo en el mismo lugar. Sin embargo, me parece que resuelve el problema al nivel de desarrollo pero no al nivel de uso en producción, por supuesto que hay otras herramientas, pero me parece que hay mucho por hacer.

Al final esto me hizo pensar en las muchas limitaciones que existen, que se traducen en muchas oportunidades de negocio para potenciales startups, una por cada caso de uso específico ya que son pocos los casos que se pueden generalizar en este momento de forma eficiente, aunque también es cierto que muchas veces la eficiencia no es una prioridad, o al menos es importante considerar cual es la eficiencia base que la mayoría de los usuarios tiene, lo que puede ser un poco engañoso.

Pensando en dinero

No voy a hablar mucho de este punto porque me parece que los precios son bastante accesible, en total, tomando en cuenta que buena parte de mi trabajo la hice con las versiones gratuitas, gaste menos de 10 euros, y si no me tomó menos tiempo al menos terminó por ser mucho más interesante, pues en lugar de repetir un proceso 5600 veces aprendí muchas cosas nuevas y sentí muchas emociones durante el proceso.

Me parece que los precios son fijados artificialmente y que no reflejan ninguna de las cosas tradicionalmente asociadas al valor de un servicio, pero eso es tema para otro post. Creo que aquí, igual que con los coches eléctricos, es muy importante pensar en los costos ocultos, de los que pocas veces la gente habla pero tienen un impacto directo en la vida de las personas.

Conclusiones

Quizá es más un tema para otro post, pero me parece que los que evaluaban los asistentes de inteligencia artificial son, generalmente, ejecutivos en compañías que tienen que ser rentables porque tienen inversores, entonces en realidad implícita o explícitamente el producto fue diseñado para estos ejecutivos y sus amigos. Es decir, me parece que no está pensado para obreros sino para administradores, y es algo de lo que se habla muy poco pero es extremadamente importante entenderlo para realmente sacar provecho de esta tecnología.

Es importante pensar en términos de ciencia de datos o big data, en particular como se hace a escala, es decir, como se puede trabajar en paralelo, es algo que estuvo de moda hace algunos años y que aunque sigue siendo muy relevante me parece que se oye mucho menos estos días. Requiere un cambio en la forma de pensar y enfocar el problema y es bastante difícil si uno no cuenta con la formación adecuada, además de tener acceso a casos de uso reales para aplicar lo aprendido.

Me quedé con la idea bastante definida de que la inteligencia artificial en este momento es una forma becario, con muy buenas intenciones y muy amable, pero que necesita mucha atención y supervisión. A alguna gente (ver el primer párrafo) le pagan por hacer esto, pero no a toda. Creo que antes de pensar que es una solución universal es importante saber que tan dispuesto está uno dispuesto a hacer tareas administrativas, al final no significa que sea menos trabajo, significa que el trabajo cambia de ser ejecutor a ser auditor. Viéndolo a largo plazo tiene sentido aprender a administrar, porque el tiempo de ejecución cambia poco, pero el saber coordinar a muchos ejecutores puede ser bastante eficiente.

Pasos siguientes

En este momento no he terminado de extraer y validar todo, me ha tomado bastante tiempo, y no me he dedicado obsesivamente a terminarlo, pero en cuanto termine de hacerlo pondré los datos obtenidos en el sitio y completaré la explicación técnica, me pareció muy importante escribir este post ahora, porque creo que es fácil cambiar nuestra idea una vez que terminamos algo, no es algo que se pueda evitar, es parte de la naturaleza humana.

Tengo que mejorar mucho la forma en la que coordino el trabajo, pensé que sería mucho más rápido y directo por lo que no empecé ningún documento hasta que ya iba algo avanzado, y tengo un directorio sin pies ni cabeza, y varias aplicaciones que usé y que se me ocurrían en el momento para resolver el problema que tenía frente a mí.