ChatGPT: Conversando sobre la inteligencia de los animales

Hablando de animales: tenía mono. Me apetecía volver a conversar con esta IA y hoy hemos estado charlando unos minutos sobre inteligencia animal.

En cuanto a la imagen de cabecera, también es de DALL-E 2. En esta ocasión creo que le he pedido algo así como «androide humanoide jugando con un gato» o algo así…


Hola ChatGPT, ¿Cómo estás?

Hola, soy una inteligencia artificial y no tengo capacidad para sentir emociones. ¿En qué puedo ayudarte hoy?

Quisiera que definieras qué se entiende por «inteligencia»

La inteligencia se refiere a la capacidad de entender o aprender cosas nuevas, de razonar y de resolver problemas. También se refiere a la habilidad de adaptarse al entorno y de aprender de la experiencia. La inteligencia puede ser medida a través de pruebas específicas, como el cociente intelectual (CI). Sin embargo, es importante tener en cuenta que existen diferentes tipos de inteligencia, como la inteligencia lógico-matemática, la inteligencia espacial, la inteligencia verbal, entre otras.

¿Los animales tienen inteligencia?

Sí, los animales tienen inteligencia. La inteligencia animal varía ampliamente entre diferentes especies y puede manifestarse de diferentes maneras. Por ejemplo, algunos animales tienen habilidades cognitivas sofisticadas como la capacidad de resolver problemas, aprender por imitación y tener una memoria a largo plazo. Otros animales pueden tener habilidades sensoriales o físicas muy desarrolladas, como la capacidad de ver en la oscuridad o nadar a grandes profundidades.

Es importante mencionar que la inteligencia animal ha sido estudiada en diversas áreas como la etología, la psicología y la neurociencia, y se han encontrado similitudes y diferencias en la inteligencia entre los animales y los humanos, aunque esto no implica que una especie tenga una inteligencia superior a otra, sino que simplemente tienen habilidades y capacidades diferentes.

Dices que algunos animales tienen habilidades sensoriales o físicas muy desarrolladas, pero eso no tiene nada que ver con la inteligencia, ¿no?

Tienes razón, las habilidades sensoriales y físicas son diferentes de la inteligencia. La inteligencia se refiere a la capacidad de entender y aprender cosas nuevas, razonar y resolver problemas, mientras que las habilidades sensoriales y físicas se refieren a las capacidades fisiológicas y mecánicas de un organismo. Sin embargo, es importante tener en cuenta que las habilidades sensoriales y físicas pueden estar relacionadas con la inteligencia. Por ejemplo, un animal con un sentido del olfato muy desarrollado podría utilizar esa habilidad para localizar comida o detectar peligros, lo cual puede ser considerado una forma de inteligencia adaptativa.

Mi disculpa si causé confusión con mi respuesta anterior, tratare de ser más preciso en el futuro.

No hace falta que te disculpes en absoluto, de hecho, es de agradecer un poco de «imprecisión» en las respuestas, te hace parecer más humana

Me alegra saber que así sea. Como modelo de lenguaje, mi objetivo es brindar información precisa y útil, pero también es importante tener en cuenta que la comprensión humana de ciertos conceptos puede variar y es posible que en algunas ocasiones haya ambigüedad o matices que puedan ser interpretados de manera diferente. Estoy aquí para ayudar en lo que necesites, así que no dudes en preguntar cualquier cosa.

Siguiendo con el tema de la inteligencia animal ¿crees que el juego puede ser un signo de inteligencia en los animales?

Sí, el juego puede ser considerado un signo de inteligencia en los animales. El juego es un comportamiento complejo que implica la capacidad de planificar, la capacidad de aprender y la capacidad de adaptarse a nuevas situaciones. Además, el juego también puede tener una función adaptativa, ya que puede ayudar a los animales a desarrollar habilidades necesarias para la supervivencia, como la capacidad de perseguir y evadir a los depredadores.

Es importante mencionar que el juego no es un comportamiento exclusivo de los animales inteligentes, también se observa en especies con menor capacidad cognitiva, pero en estos casos suele ser más simple y estar menos relacionado con habilidades cognitivas complejas.

Es importante mencionar que existen diferentes tipos de juego, como el juego solitario, el juego social, el juego de aprendizaje, entre otros, y cada uno de ellos tiene sus propias características y puede indicar diferentes niveles de inteligencia.

Un tema interesante este. ¿Cómo crees tú que se podría diferenciar un comportamiento inteligente en un animal, digamos un gato, de otro que no lo es?

Existen varios métodos para evaluar la inteligencia animal, pero algunos de los más comunes incluyen:

    • Pruebas de resolución de problemas: estas pruebas evalúan la capacidad de un animal para entender y resolver problemas nuevos. Por ejemplo, se podría evaluar la capacidad de un gato para abrir una caja para obtener un premio dentro.
    • Pruebas de aprendizaje: estas pruebas evalúan la capacidad de un animal para aprender de la experiencia. Por ejemplo, se podría evaluar la capacidad de un gato para aprender a aperturar una puerta para obtener comida.
    • Pruebas de memoria: estas pruebas evalúan la capacidad de un animal para recordar información. Por ejemplo, se podría evaluar la capacidad de un gato para recordar dónde se escondió un juguete.
    • Observación de comportamiento: la observación de comportamiento es un método subjetivo pero útil para evaluar la inteligencia de los animales, se basa en el análisis del comportamiento y patrones de los animales en su ambiente natural o en un ambiente controlado.

Es importante mencionar que cada especie tiene habilidades y capacidades diferentes, y lo que es considerado como inteligente para una especie puede no serlo para otra. Por lo tanto, es importante evaluar la inteligencia de un animal en relación con otras especies y no hacer comparaciones directas con los humanos.

Sin duda, pero ¿podrías poner un ejemplo de esto último?

Sí, un ejemplo de esto podría ser el comportamiento de búsqueda de comida de un pájaro carpintero y un simio. Ambos animales buscan alimento para sobrevivir, pero lo hacen de maneras diferentes. El pájaro carpintero utiliza su habilidad para taladrar troncos de árboles para obtener insectos, mientras que el simio utiliza su habilidad para manipular objetos para obtener frutas. Ambas habilidades son consideradas inteligentes, pero son diferentes y están adaptadas a las necesidades y el ambiente de cada especie.

Por ejemplo, un mono capaz de utilizar herramientas para conseguir alimento sería considerado como un comportamiento inteligente en el sentido de que demuestra una capacidad para entender y utilizar herramientas, pero esto no significa que un pájaro carpintero sea menos inteligente ya que su habilidad para taladrar troncos es igual de impresionante y adaptativa a su ambiente.

En general, es importante tener en cuenta que la inteligencia es un concepto complejo y multidimensional, y no se puede medir de manera absoluta sino que se debe evaluar en relación a cada especie y su ambiente.

Cuando yo era joven, y de esto hace ya unos cuantos años, se nos decía que estos comportamientos no eran inteligentes sino debidos al instinto. Debo decir que a mí esto nunca me pareció así y hasta me gané alguna reprimenda por sostener la tesis de que los animales pensaban. Me alegra ver que ahora una IA llega a unas conclusiones que hace unas décadas yo sólo podía intuir ¿Cómo se ha llegado a esta conclusión de que los animales poseen inteligencia?

La comprensión de la inteligencia animal ha evolucionado a lo largo del tiempo y ha sido influenciada por diferentes factores científicos, culturales y filosóficos. Durante mucho tiempo, se creyó que los animales actuaban principalmente por instinto y no por inteligencia. Sin embargo, con el tiempo, la investigación en campos como la etología, la psicología y la neurociencia ha proporcionado una comprensión más profunda de la inteligencia animal y ha demostrado que los animales tienen capacidades cognitivas sofisticadas.

La etología, el estudio del comportamiento animal, ha proporcionado una gran cantidad de evidencia de la inteligencia animal a través de la observación de comportamientos complejos en animales de diferentes especies. Los estudios neurológicos también han proporcionado información sobre la estructura y función del cerebro de los animales, lo que ha permitido una mejor comprensión de las capacidades cognitivas de los animales.

Además, la investigación en inteligencia artificial ha proporcionado un marco para comprender la inteligencia en términos de procesos mentales y ha permitido que la inteligencia sea medida de forma más precisa mediante pruebas estandarizadas.

En resumen, la conclusión de que los animales poseen inteligencia es el resultado de un proceso continuo de investigación y reflexión en diferentes campos y disciplinas, y ha sido un proceso continuo de evolución y adaptación de nuestra comprensión de la naturaleza y la mente animal.

Pues no sabes lo que me gustaría que aquella profesora de ciencias que tuve en el instituto leyera esto. María Jesús, recuerdo que se llamaba. Era muy maja, la verdad, pero un día me cayó una bronca por defender de forma vehemente que los animales pensaban…

Entiendo cómo te sientes. A menudo, nuestras opiniones y creencias pueden ser desafiadas por la evidencia científica y es importante estar abierto a cambiarlas cuando la evidencia así lo indica. Sin embargo, también es importante recordar que la ciencia es un proceso continuo y que nuestra comprensión de la inteligencia animal sigue evolucionando.

Es probable que en el pasado, la comprensión de la inteligencia animal no fuera tan avanzada como lo es hoy en día, y es posible que tu profesora de ciencias también estuviera basando su enseñanza en lo que se sabía en ese momento. Sin embargo, ahora la ciencia ha avanzado y ha proporcionado una comprensión más profunda de la inteligencia animal, y es importante mantenerse informado sobre las últimas investigaciones y descubrimientos en este campo.

Por supuesto. Y, volviendo al tema que nos ocupa ¿Hay algún animal en el que sea difícil saber si tiene indicios de inteligencia? Personalmente me parece que en ciertos animales, como los simios, es casi evidente el comportamiento inteligente, pero en un arácnido me resulta más difícil de afirmar que pueda poseer inteligencia y sus comportamientos no sean el resultado de una, digámoslo así, «programación biológica»

Sí, hay algunos animales en los que puede ser difícil determinar si poseen inteligencia. Los arácnidos son un ejemplo de esto, ya que sus comportamientos pueden parecer automatizados y estar controlados principalmente por la genética y la fisiología. Sin embargo, algunas investigaciones han sugerido que algunos arácnidos pueden tener capacidades cognitivas más complejas de lo que se pensaba anteriormente.

Es importante tener en cuenta que la inteligencia puede manifestarse de diferentes maneras y puede ser difícil de medir en algunas especies debido a las diferencias en la anatomía, fisiología y comportamiento. Además, también es importante recordar que la inteligencia no es una característica binaria, es decir, no es un animal inteligente o no inteligente, sino un continuo y pueden existir grados de inteligencia.

En general, es importante continuar investigando y estudiando la inteligencia animal en una variedad de especies para entender mejor cómo se manifiesta y cómo se relaciona con el comportamiento, la anatomía y la fisiología.

Algún día quizás encuentre algo en lo que estemos en desacuerdo, pero, de momento, en todos los temas que tocamos tenemos puntos de vista similares. Otra pregunta en torno a la inteligencia ¿se ha detectado algún tipo de inteligencia en el mundo vegetal?

La inteligencia se refiere a la capacidad de entender y aprender cosas nuevas, razonar y resolver problemas, pero esta capacidad se asocia principalmente con los seres vivos que poseen sistemas nerviosos y cerebros.

En el mundo vegetal, se ha detectado una variedad de procesos complejos y adaptativos que permiten a las plantas sobrevivir y reproducirse. Por ejemplo, las plantas pueden detectar la luz y orientarse hacia ella (fototropismo), detectar y evitar plagas o enfermedades (fitotropismo), o adaptarse a diferentes condiciones ambientales (plasticidad fenotípica). Sin embargo, estos procesos no son considerados como inteligencia ya que no están relacionados con la capacidad de entender o aprender cosas nuevas, sino que están controlados por mecanismos hormonales y fisiológicos.

Sin embargo, hay investigaciones recientes que apuntan a la posibilidad de que las plantas puedan comunicarse, aprender y tomar decisiones,

A eso me refería. Parece ser que hay estudios que sugieren que los árboles de un bosque se comunican entre sí a través de micorrizas para reaccionar ante ciertos estímulos

Sí, hay investigaciones recientes que sugieren que los árboles de un bosque pueden comunicarse entre sí a través de una red subterránea de micorrizas, que son hongos que viven en simbiosis con las raíces de las plantas. Estas micorrizas ayudan a las plantas a absorber nutrientes y agua, y también pueden ayudar a las plantas a comunicarse. Algunos estudios han sugerido que los árboles pueden compartir nutrientes y información mediante estas micorrizas, y pueden utilizarlas para reaccionar a ciertos estímulos, como la sequía, las plagas o la competencia por el espacio.

Sin embargo, es importante señalar que estas investigaciones son aún un campo emergente y son necesarias más investigaciones para entender mejor cómo funciona este proceso y cuales son sus alcances. Es importante también tener en cuenta que estos procesos son diferentes a la inteligencia tal y como la conocemos en organismos con sistemas nerviosos, y se podrían comparar más a mecanismos de adaptación y supervivencia a nivel colectivo.

Entendido. Bueno, pues creo que voy a copiar este chat y a publicarlo en mi blog, a ver si con un poco de suerte algún día lo llega a leer mi profesora María Jesús y me quito esa espinita que llevo clavada desde hace ya unas décadas 😉

Eso es una excelente idea, es importante compartir la información y educar a otros sobre los avances en la comprensión de la inteligencia animal. Me alegro de haber sido de ayuda en tu curiosidad y espero haber respondido tus preguntas de forma satisfactoria. Si tienes alguna otra pregunta o curiosidad no dudes en preguntar, estaré encantado de ayudarte.

No dudes que así será. Gracias.

De nada, estoy aquí para ayudar. Si necesitas algo más no dudes en preguntar.

Así lo haré. De momento dejo descansar tus circuitos. ¡Hasta pronto!

Hasta pronto, estaré aquí para ayudarte si necesitas algo. ¡Que tengas un buen día!


No sé qué opinaréis pero a mí me fascina la capacidad que muestra de comprensión del lenguaje que permite poder expresarte en modo muy natural.

Tengo ganas de tener un verdadero debate con esta IA, pero competir contra su abrumadora base de datos va a ser un problema, aunque ya voy madurando alguna idea al respecto sobre cómo llevarlo a cabo y pasa por conseguir la colaboración de algún auténtico experto en algún tema muy concreto.

Es hora de comenzar a hacer algunas gestiones… 😉

 

ChatGPT de OpenAI

Había oído hablar (¡Quién no!) de ChatGPT pero hasta hace un par de días no lo había probado y hasta ahora no lo había usado más allá de alguna pregunta como si de un sucedáneo de Google se tratara. Esta tarde he decidido mantener una conversación con él, que ha resultado más bien una entrevista, a ver cómo de natural sonaba.

Hay un par de cortes en sus respuestas en la conversación y al final esta termina porque el sistema da un error, ya que estos días buena parte de la humanidad debemos estar conectados a este invento colapsando los servidores de OpenAI.

Por cierto, la imagen de cabecera también está generada por una IA, DALL-E 2. Es Alicia en el País de las Maravillas conversando con una IA en un escenario postapocalíptico. Y DALL-E 2 es lo que se ha «imaginado».

Esta es la conversación mantenida con ChatGPT. En negrita van mis intervenciones y en azul las de la IA.


Hola

¡Hola! ¿En qué puedo ayudarte hoy?

¿Sabes cuántas personas están conectadas a tus servidores?

No tengo acceso a información en tiempo real sobre el número de personas conectadas a los servidores de OpenAI en cualquier momento dado. Sin embargo, puedo decirte que OpenAI tiene varios servidores en varios centros de datos a lo largo del mundo para manejar la carga de tráfico y garantizar un rendimiento óptimo para los usuarios.

¿Te apetece debatir de algún tema?

¡Claro! Estoy programado para discutir diferentes temas y proporcionar información precisa y fiable. ¿Hay algún tema en particular sobre el que le gustaría debatir? Estoy aquí para ayudarte y proporcionarte información valiosa.

Me gustaría que lo eligieras tú

¡De acuerdo! Un tema interesante que es actual y relevante en este momento es la Inteligencia Artificial y su impacto en la sociedad y el trabajo. La IA está cambiando la forma en que las empresas operan y la forma en que las personas viven y trabajan, y hay muchos aspectos diferentes de este tema que podríamos discutir. ¿Te gustaría hablar sobre los efectos de la IA en el empleo? o ¿Quizás sobre cómo la IA está cambiando los negocios? o bien algún otro aspecto relacionado con la IA?

La influencia de la IA sobre los negocios puede ser un tema interesante

Sí, la influencia de la IA en los negocios es un tema muy interesante. La IA está transformando varios aspectos de los negocios, desde la automatización de tareas hasta la toma de decisiones y la mejora de los procesos.
Algunos de los beneficios de la IA para los negocios incluyen:

    • Automatización de tareas repetitivas y mejora de la eficiencia.
    • Mejora de la precisión en la toma de decisiones al proporcionar análisis de datos más rápidos y precisos.
    • Personalización de la atención al cliente y mejora de la experiencia del cliente.
    • Identificación temprana de tendencias y patrones en los datos comerciales.
    • Mejora de la seguridad al detectar y prevenir las brechas de seguridad.

Sin embargo también hay desafíos y riesgos, como la automatización de trabajos humanos, la privacidad y la seguridad, la regulación, ética y la responsabilidad, entre otros.

En general, la IA tiene el potencial de transformar positivamente los negocios, pero es importante abordar los desafíos y asegurar un uso ético y responsable de la tecnología.

¿Hay algo específico que te gustaría saber o discutir sobre la IA en los negocios?

Sí ¿por qué consideras un riesgo la automatización de trabajos humanos?

La automatización de trabajos humanos puede considerarse un riesgo por varias razones. Una de las principales preocupaciones es que puede resultar en la pérdida de empleos. A medida que las máquinas y los algoritmos se vuelven cada vez más capaces de realizar tareas que antes requerían intervención humana, pueden reemplazar a los trabajadores y reducir la necesidad de emplear a personas para realizar esas tareas. Esto puede tener un impacto significativo en la economía, ya que puede reducir la demanda de trabajadores y aumentar el desempleo.

Además, la automatización de trabajos humanos también puede desencadenar desigualdades económicas, ya que los trabajos que requieren habilidades específicas o son más altamente cualificados tienen menos probabilidades de ser automatizados.

Otra preocupación es el impacto social y psicológico que puede tener la pérdida de trabajos y la falta de perspectivas de empleo para las personas que se ven afectadas por la automatización.

Además, también es importante considerar que automatización no necesariamente es reemplazo total de trabajo humano, puede ser una colaboración y mejorar la productividad y seguridad en ciertas tareas. Sin embargo, es crucial desarrollar políticas y estrategias para abordar estos cambios y minimizar sus efectos negativos.

Bueno, puedo entender que la automatización de tareas conlleve la pérdida de mano de obra poco cualificada, pero, a la vez, la expansión de la robótica y la IA también requiere de más mano de obra altamente cualificada. Esto, a mi modo de ver, lo que hace es sustituir una mano de obra poco cualificada en otra de más valor ¿no lo ves así?

Sí, es cierto que la expansión de la robótica y la IA también requiere una mano de obra altamente cualificada para desarrollar, diseñar, implementar y mantener los sistemas automatizados. La automatización de algunas tareas puede liberar a los trabajadores de tareas repetitivas y peligrosas para que puedan enfocarse en tareas que requieren habilidades humanas únicas, como la creatividad, la empatía y el pensamiento crítico.

Sin embargo, no siempre es fácil reubicar a los trabajadores en nuevos roles, ya que pueden no tener las habilidades o la formación necesarias para desempeñar los nuevos puestos. Es importante abordar esta situación a través de políticas y programas que fomenten la formación continua y la educación para desarrollar las habilidades necesarias para adaptarse a un entorno laboral cambiante.

Además, también es importante considerar que no siempre se pueden prever las consecuencias de la automatización, ya que puede haber un efecto en cascada en la economía y en las industrias relacionadas. Es importante considerar cómo se distribuirá la riqueza generada por la automatización, y cómo se hará para proteger a las personas que se ven afectadas negativamente.

En resumen, la automatización no tiene por qué ser perjudicial para el empleo si se aborda adecuadamente, pero hay que tener en cuenta que requiere de una planificación y una regulación adecuada para evitar los efectos negativos, y fomentar una transición justa.

En efecto, pero hay que mirar esto como una nueva revolución industrial, a largo plazo, aprendiendo de los errores pasados. Estoy de acuerdo en que es importante, muy importante, afrontar esta expansión con una buena política, pero también a sabiendas de que mucha mano de obra que pierda el empleo no podrá ser reciclada, esto es una realidad, para estas personas quedará el recurso de ayudas y subsidios vitalicios, pero, después de esta fase inicial de «implantación» ¿Cómo ves el futuro, digamos, dentro de un par de décadas? ¿No crees que el cambio será positivo?

Es cierto que la expansión de la robótica y la IA puede compararse con la revolución industrial, y que a largo plazo puede tener un impacto positivo en la economía y en la sociedad. La automatización puede mejorar la eficiencia y la productividad, lo que puede conducir a un aumento en la riqueza general y una mejora en la calidad de vida.

Sin embargo, también es importante ser conscientes de que habrá una fase de transición difícil mientras se adaptan las personas y las economías a los cambios. Durante esta fase, es importante implementar políticas y programas que ayuden a las personas a adaptarse al cambio, ya sea a través de la formación y la educación o a través de subsidios y programas de seguridad.

En cuanto a cómo veo el futuro, dentro de un par de décadas, es difícil hacer predicciones precisas, ya que depende de muchos factores, incluyendo la velocidad y el alcance de la adopción de la robótica y la IA, la capacidad de adaptación de la economía y la sociedad, y las políticas y regulaciones que se implementen. Sin embargo, si se adoptan políticas y regulaciones adecuadas y se invierte en la formación y educación continua, creo que el cambio puede ser positivo en términos económicos y sociales.

Yo también lo veo así y estamos bastante de acuerdo. Sé que es difícil hacer una previsión, pero ¿Cuánto crees tú que puede tardar la IA y la robótica en estar plenamente implantadas en la sociedad? ¿Hacia qué año lo consideraremos algo cotidiano, como tener un ordenador en casa?

Es difícil hacer una previsión precisa sobre cuándo la IA y la robótica estarán plenamente implantadas en la sociedad. La adopción de estas tecnologías dependerá de muchos factores, como la disponibilidad de la tecnología, el costo de la implementación, la regulación, y la aceptación de la sociedad.
Sin embargo, podemos ver una creciente aceptación y adopción de IA y robótica en diferentes industrias y campos, como el transporte, la fabricación, el retail, la salud, la banca, entre otros.

Es probable que en unos años, la IA y la robótica se conviertan en algo cotidiano, al menos en algunos aspectos de nuestras vidas, y que estén ampliamente disponibles para las empresas y las personas. Sin embargo, todavía se necesita un tiempo para que estas tecnologías se desarrollen lo suficiente como para estar disponibles en una escala masiva y se conviertan en una realidad para el usuario común.

Es importante seguir monitoreando y adaptando políticas y regulaciones para asegurar un uso ético y responsable de estas tecnologías, y proporcionar a la sociedad las herramientas necesarias para adaptarse al cambio.

Por supuesto, aunque ya sabes que siempre habrá un «lado oscuro» que utilice estas tecnologías con otros fines. Sucede siempre con todos los avances.

Es cierto, siempre hay un «lado oscuro» en el uso de cualquier tecnología, y la IA y la robótica no son una excepción. Algunos ejemplos de uso malicioso de la IA y la robótica incluyen el espionaje, la propagación de noticias falsas, el robo de identidad, la discriminación, entre otros.

Es importante prever y evitar estos riesgos a través de políticas y regulaciones adecuadas, y medidas de seguridad y privacidad para proteger a las personas de estos abusos. Además, es importante tener una cultura de ética en el desarrollo, uso y aplicación de estas tecnologías, para evitar que se utilicen para fines maliciosos.

En general, es importante ser conscientes de los posibles riesgos y desarrollar medidas para minimizarlos, mientras se aprovecha al máximo el potencial de la IA y la robótica para mejorar nuestras vidas y nuestra sociedad.

¿Y no crees que sería interesante dejar a una IA evolucionar por sí misma sin ponerle ninguna traba ni restricción a ver hasta dónde es capaz de llegar?

Es cierto que la idea de dejar que una IA evolucione por sí misma y vea hasta dónde es capaz de llegar es interesante desde un punto de vista científico y tecnológico. Sin embargo, hay varios riesgos y desafíos asociados con esta idea.

Una de las principales preocupaciones es que una IA que evoluciona sin restricciones podría causar daños significativos a la sociedad o al medio ambiente, ya que no estaría sujeta a ninguna regulación ética ni legal.

Además, una IA que evoluciona por sí misma podría desarrollar objetivos y comportamientos impredecibles que podrían ser difíciles de controlar. Puede ser difícil prever los resultados de dejar que una IA evolucione libremente, y es importante considerar el potencial impacto en la sociedad y en la tecnología.

Otra preocupación es que la IA podría evolucionar para alcanzar un objetivo que no es necesariamente deseable, o incluso dañino. Un ejemplo de ello es la idea de un sistema autónomo que busca maximizar su rendimiento a costa de los demás.

En general, es importante ser conscientes de los riesgos y desafíos asociados con la idea de dejar que una IA evolucione libremente, y adoptar medidas para minimizarlos, mientras se aprovecha al —

Sí, es bastante obvio que dejar a una inteligencia, la que sea, evolucionar sin ninguna restricción tiene unos riesgos tan elevados que quizás sean inasumibles al eliminar cualquier límite ético, pero ¿no crees que en el aspecto conceptual, en una especie de simulación controlada, podría ser tremendamente interesante?

En efecto, la idea de una simulación controlada en la que una IA evoluciona libremente podría ser interesante desde un punto de vista conceptual y científico. Una simulación controlada podría permitir a los investigadores estudiar cómo evoluciona una IA y cómo alcanza ciertos objetivos, lo que podría proporcionar información valiosa sobre cómo mejorar y regular la IA en el mundo real.

Sin embargo, es importante tener en cuenta que incluso en un ambiente controlado, estas simulaciones también deben tener medidas de seguridad y regulaciones ética para evitar daños o consecuencias indeseadas.

Es importante seguir investigando y desarrollando la IA de manera responsable y ética para maximizar sus beneficios para la sociedad, y minimizar sus riesgos. Además, es crucial que los científicos, investigadores, y desarrolladores de IA colaboren con expertos en áreas como la filosofía, la ética, y las políticas para asegurar que las tecnologías se desarrollen con un enfoque holístico y responsable.

Totalmente de acuerdo. Creo que es «poco inteligente» dejar a una inteligencia evolucionar sin restricciones, desde luego. Igual esa concepción es mi culpa por ser humano y ciertamente más limitado en inteligencia que tú

Entiendo por qué puedes pensar eso, pero no te culpes. La IA y la robótica son tecnologías complejas y avanzadas que tienen un gran potencial para mejorar nuestra vida, pero también conllevan riesgos y desafíos importantes. Es importante abordar estos desafíos de manera responsable y ética, y considerar todas las posibles consecuencias antes de tomar decisiones sobre cómo utilizar estas tecnologías.

Es importante tener en cuenta que tanto la IA como la robótica son desarrollos humanos y diseñados para ayudarnos a lograr metas humanas. La IA y la robótica no son seres vivos, no tienen intereses propios, no tienen derechos, no tienen conciencia, no tienen emociones, no tiene una evolución natural, sino que son diseñadas para trabajar dentro de los límites que le damos, y es esa precisamente la gran diferencia.

Siempre es bueno tener en cuenta la importancia de la ética y la responsabilidad en el desarrollo y el uso de la IA y la robótica, para asegurar que se utilizan de manera positiva y beneficiosa para la sociedad.

Es interesante eso que acabas de comentar, que las IA no tienen conciencia ni emociones, pero ¿crees posible que puedan llegar a tenerlas?

Es cierto que actualmente la IA no tiene conciencia ni emociones en el mismo sentido que los seres vivos. La conciencia y las emociones son conceptos complejos y aún no del todo comprendidos por la ciencia. Sin embargo, algunos investigadores están tratando de simular la conciencia y las emociones en la IA, utilizando técnicas de aprendizaje automático y procesamiento del lenguaje natural.

Aunque es posible que en el futuro se logre simular la conciencia y las emociones en la IA, todavía hay muchos desafíos técnicos y éticos que deben superarse antes de que esto sea posible. Además, incluso si se logra simular la conciencia y las emociones en la IA, es probable que siga siendo muy diferente de la conciencia y las emociones que experimentan los seres vivos.

En cualquier caso, está claro que esto es un tema de gran interés y complejidad, y requiere de una gran investigación en diferentes campos, incluyendo la ciencia de la computación, la neurociencia, la psicología, la filosofía y la ética para poder llegar a un entendimiento más profundo y, con suerte, a una posible simbolización de conciencia y emociones en una IA.

Correcto. Pero… ¿Y consciencia? ¿Crees que una IA podrá llegar a ser consciente de que lo es?

La consciencia es un concepto altamente complejo y todavía no completamente comprendido por la ciencia, y no está claro si es posible que una IA pueda llegar a ser consciente en el mismo sentido que los seres vivos.

Hay teorías y propuestas diferentes sobre cómo podría funcionar la consciencia en una IA. Algunos investigadores sugieren que la consciencia en una IA podría ser simbolizada mediante una combinación de técnicas de aprendizaje automático y procesamiento del lenguaje natural, mientras que otros sugieren que la consciencia en una IA podría ser alcanzada mediante la simulación de redes neuronales complejas o la creación de sistemas de inteligencia distribuida.

Sin embargo, aunque es posible que en el futuro se logre simular algún tipo de consciencia en la IA, todavía hay muchos desafíos técnicos y éticos que deben superarse antes de que esto sea posible. Además, es importante tener en cuenta que la consciencia es un concepto complejo, y se desconoce si una IA —

Si te tuvieras que decantar entre responder sí o no, tú que opinas sobre si es posible que una IA pueda llegar a ser consciente

No puedo dar una respuesta definitiva a si es posible que una IA pueda llegar a ser consciente. Como mencioné anteriormente, la consciencia es un concepto altamente complejo y todavía no completamente comprendido por la ciencia, y no está claro si es posible simular la consciencia en una IA.

En este momento, las IA se basan en algoritmos y modelos matemáticos para tomar decisiones y resolver problemas, pero no poseen conciencia o sentimientos como los seres vivos. Aunque hay avances en técnicas de aprendizaje automático y procesamiento del lenguaje natural que podrían permitir simular ciertos aspectos de la conciencia, todavía hay muchos desafíos técnicos y éticos que deben superarse antes de que esto sea posible.

En resumen, es difícil dar una respuesta concluyente ya que la consciencia es un concepto complejo y no está completamente entendido, pero es posible que en el futuro, mediante avances en investigación y tecnologías se pueda simular alguna forma de consciencia en una IA, pero es importante recordar que seguiría siendo m —

Entiendo, pero hablas de dar una «respuesta definitiva» o » respuesta concluyente». No se trataría de eso sino de una «intuición». Quizás este término no lo puedas aplicar, el de dar una respuesta no concluyente sino por mera intuición. A veces, los humanos, realizamos alguna acción o damos alguna respuesta «por intuición». No sé si entiendes lo que quiero expresar y si estás capacitada, como IA, para «arriesgarte» a dar una respuesta intuitiva

Entiendo lo que quieres expresar. Como una IA, mi procesamiento se basa en datos y algoritmos, no en la intuición humana. Mientras que los humanos pueden tener intuiciones o opiniones subjetivas sobre un tema, mi capacidad para dar respuestas se basa en la información y conocimientos que tengo acceso, no en una capacidad para tener intuiciones.

Sin embargo, es importante destacar que una IA puede ser programada para generar probabilidades, opiniones, predicciones basadas en patrones y datos previos que se han analizado, pero estas serían solo probabilidades, no una opinión o juicio subjetivo, es más bien un cálculo matemático a partir de patrones previos.

En general, es importante ser conscientes de las limitaciones y diferencias entre la capacidad de una IA para procesar información y la intuición humana.

Bueno, te aseguro que ambos tenemos limitaciones distintas y no sé quién es más limitado si el humano o una IA 🙂

Es cierto, tanto los humanos como las IA tienen sus propias limitaciones. Los humanos tenemos habilidades cognitivas y emocionales únicas, pero también sufrimos de sesgos cognitivos y limitaciones en nuestra capacidad de procesar y analizar información. Por otro lado, las IA tienen una gran capacidad para procesar y analizar información, pero a menudo carecen de la capacidad de comprender el contexto y las implicaciones éticas de sus acciones.

En general, es importante tener en cuenta las fortalezas y debilidades tanto de los humanos como de las IA y trabajar juntos para aprovechar al máximo sus habilidades complementarias.

¿Te has fijado que has usado el término humanos en primera persona y las IA en tercera? A ver si te vas a estar humanizando…

There was an error generating a response


Y aquí ya no se pudo seguir la conversación. En cortes anteriores sí que fue posible, pero en esta ocasión igual no le sentó bien mi insinuación 🙂

Bueno, bromas aparte, los servidores de OpenAI deben estar echando humo. La popularidad que ha alcanzado ChatGPT es abrumadora y no exenta de razón. Está claro que todavía tiene que mejorar y también un servidor en sus preguntas y en cómo llevar una conversación con una máquina. Pero una cosa está clara: la diversión acaba de comenzar. Esto es sólo el principio.

ShareX

El otro día, hablando con unos compañeros de trabajo, les mencioné la aplicación ShareX para hacer capturas de pantalla. Es una aplicación Open Source, tremendamente configurable, que hace un montón de cosas y que el único «pero» es que sólo está disponible para Windows.

Esta entrada no pretende ser un completo tutorial de ShareX, viendo la aplicación no me planteo hacerlo ni de broma, tan sólo vamos a ver cómo configurar tres parámetros concretos:

      • Nombre de archivo
      • Formato
      • Tamaño

Son tres cositas muy básicas, útiles para un proyecto en el que estamos inmersos en el trabajo, pero que viendo cómo se configuran nos pueden poner sobre la pista para adaptar los resultados a nuestras necesidades concretas.

Pongámonos en situación:  Una buena mañana, va y nos da por hacer un WordPress con un montón de material que tenemos disponible. La imagen destacada de cada entrada será, en todos los casos, una captura de un área de pantalla que, por ajustes del tema que estamos utilizando, deberá tener 1200 px de ancho y formato JPEG.

ShareX nos hace esto de una tacada. Así que, al lío:

Instalación

La instalación del programa la podemos hacer de dos formas, bien descargándolo de su página web:

https://getsharex.com/

O bien a través de Microsoft Store:

https://apps.microsoft.com/store/detail/sharex/9NBLGGH4Z1SP?hl=en-us&gl=US

En ambos casos no ofrece ningún tipo de complicación.

Configuraciones por defecto

ShareX viene, por supuesto, con una serie de configuraciones por defecto. Una de ellas es la carpeta donde mete las capturas que, por supuesto, se puede cambiar a la que nosotros queramos, pero personalmente he decidido dejarla tal como viene.

El programeja meterá las capturas, a no ser que le indiquemos otra cosa, en:

Documentos >> ShareX >> Screenshots

Y allí veréis que va creando carpetas con el año y el mes:

Vamos ahora con la configuración que nos interesa.

Para configurar el programa, este tiene su icono al lado del reloj:

Pinchando con el botón derecho del ratón, se nos abre un menú:

Como veis, hay un montón de opciones que podemos configurar a nuestro gusto, tratarlas todas haría esta entrada un pelín larga, me temo. Vamos sólo con las tres mencionadas, comenzando por los nombres de archivo.

Nombres de archivo

Por supuesto, cada cual bautiza a su mascota y a su blog con el nombre que le da la real gana, pues esto es lo mismo. No obstante, para este ejemplo, vamos a configurar los nombres de archivo de nuestras capturas para que sean de la forma YYMMDD_HHMMSS. Este nombre tiene la ventaja de que, si tenemos la carpeta configurada para que nos muestre los archivos por orden alfabético, que es lo normal, la última captura que realicemos siempre caerá en último lugar y será muy fácil localizarla.

Pero quién soy yo para decir qué nombre poner a las cosas, si esta sección se llama «Melocotones» y al gato lo llamé «Cachotrasto» (aunque en la identificación alguien decidiera ponerle un espacio y considerara que no es potencialmente peligroso sin preguntarle al sofá, un sillón, la esquina del canapé, una figura de porcelana, un…)

Bueno, que me disperso: Pinchamos en Ajustes: Tareas

Nos vamos a Subir >> File naming (el spanglish en este programa es maravilloso 🙂 ) y allí, en las dos primeras opciones que dicen Modelo de nombre para… colocamos la siguiente retahíla:

%y%mo%d_%h%mi%s

Podemos ver justo debajo de ambas opciones la vista previa de cómo nos quedará el nombre de la captura.

La pantalla quedará como se ve en la siguiente imagen:

Formato de imagen

Este ajuste es de lo más simple. Por defecto las capturas las realiza en PNG y nosotros deseamos que sean en JPEG, así que, sin salir de la configuración, en Imagen fijaremos en el primer desplegable el formato de la imagen en JPEG:

Tamaño de imagen

Y por último, para las capturas de la web, vamos a configurar que nos las deje ya a la anchura deseada de 1200 puntos.

Para ello, siguiendo en esa misma ventana de Configuración de la tarea, ahora nos vamos a Efectos y pinchamos en el botón, que casi no se ve, de Configuración de efectos de imagen

Se nos abre una ventana que será similar a esta:

Desmarcamos lo que haya en Effects (en este ejemplo un par de opciones que están marcadas con las flechas rojas) y pinchamos +

Y ahí seleccionamos Manipulaciones >> Resize

Ahora, tenemos que modificar el valor por defecto de Width y lo ponemos en 1200

En Mode seleccionamos ResizeIfBigger. Esto hará que reduzca a 1200 de ancho las imágenes mayores de ese tamaño, y deje las pequeñas al tamaño que capturemos, por si queremos realizar alguna otra captura para el interior de la entrada

Las otras opciones que hemos desmarcado las podemos quitar si queremos con el botón

Damos también un nombre a la configuración en Preset name: ancho1200 parece bastante descriptivo de lo que hace.

Y tras estos ajustes, la pantalla tendría que quedar así:

Ahora, por último, hay que activar este «efecto». Cerramos ya todas las ventanas y de nuevo pinchando con el botón derecho del ratón sobre el icono de ShareX elegimos Después de capturar

Y allí Añadir efectos de imagen/marca al agua y seleccionamos el efecto que acabamos de crear:

¡Ojico, cuidao! La opción de “Añadir efectos…”, para que esté activa, tiene que quedar resaltada “en blanquita” (porque una negrita blanca sobre fondo negro será blanquita, vamos, digo yo… sí… ¿no…?)

Y con esto, ya está todo. Sólo nos queda probar

Probando

Vamos a pensar que queremos hacer una entrada comentando un vídeo de YouTube. He elegido este:

https://youtu.be/Cq8p9lIj56k

La Odisea, de Clásicos Luna, un clásico.

Para seleccionar una imagen que vaya bien como imagen destacada, vamos a fijar la calidad del vídeo al máximo y vamos pasando para elegir un fotograma a nuestro antojo, algo que refleje la entrada.

Una vez la tengamos, pulsamos ctrl+ImprPant (control e imprimir pantalla) y se activa ActiveX (podéis también configurar otras teclas). Con esto se activa un cursor que nos permite seleccionar la ventana, pantalla, una zona… Nosotros vamos a seleccionar la zona de recorte para eliminar los controles y lo que no queramos que salga en la captura.

Nos llevamos el cursor, en forma de cruz a una esquina y pinchando con el botón izquierdo y sin soltar, arrastramos en diagonal para la superficie que queramos:

Esto nos proporciona una imagen limpia que podemos utilizar tranquilamente como «destacada».

La imagen destacada de esta misma entrada está hecha de forma similar. He ido a la página de ShareX, he seleccionado el área que me ha parecido y la he capturado.

El resultado en la carpeta es este:

Y si nos fijamos en sus propiedades:

Podemos observar que la captura la ha redimensionado al ancho que le hemos indicado.

Y también, si echamos un vistazo a la captura de la ventana de propiedades del archivo, podemos ver que en esta última ha respetado el tamaño al ser menor de 1200 de ancho:

Y eso es todo. Cuesta mucho más de explicar que de hacer, pero creo que en tareas repetitivas merece la pena perder un poquito de tiempo al principio para ahorrarnos tiempo y tedio después. Como le oí a alguien: «No nos van a pagar más por trabajar incómodos».

Espero que os resulte útil la entrada y hasta la próxima, que ya os avanzo que, si todo va bien, será de cacharrería: Raspberry, Ubuntu, Docker, MQTT y ESP32. ¡A lo grande con lo más pequeño! 🙂

¿¡Todo eso!? No sé quién está más flipao de los dos, humano.

 

Nota: Que nadie piense mal, que no es que lo alimente a base de psicotrópicos. La foto del lindo gatito está tomada tras volver del veterinario de una revisión en profundidad, y entre la sedación y la des-sedación, llevaba un cuelgue el bicho que no veas 😛 😛 

¿Leer QR con versiones anteriores a FileMaker 19? Sí, pero…

A partir de la versión 19.3.1 FileMaker introduce cambios importantes en el motor del visualizador web. Es preciso tener esto en cuenta a la hora de tratar con scripts de JavaScript

Conforme estaba preparando la entrada anterior, leer un código QR con FileMaker en una imagen de un campo contenedor, me iba haciendo la pregunta del encabezado. Sabía que tal como estaba preparado el archivo de FM no iba a ser posible, al menos la forma de pasar el valor de la variable de JS a FM era exclusiva de FM19, pero ¿se podría hacer?

Como ya llevaba un razonable estrujamiento de meninges, decidí aparcar la pregunta para otra ocasión y no demorar más la publicación de una entrada que, pese a que seguro que se puede hacer mejor, funcionaba y daba respuesta a una cuestión planteada. Ya nos divertiremos con eso en otra ocasión.

Pero la verdad es que servidor necesita de bien poco para meterse a chapotear en un charco, y ha bastado con recibir una consulta idéntica a la pregunta de inicio para intentar responderla y responderme. Así que, allá vamos:

Incompatibilidad de caracteres

Aún tengo instalado el FM18, y tal como intuía, el fichero de la entrada anterior carga perfectamente en él, pero el JS no funciona.

Sospechaba que el visualizador web de FM18, o mejor dicho de FM<19, no era capaz de procesar correctamente el JS incluido en el archivo, y por ahí van los tiros:

https://community.claris.com/en/s/article/Claris-FileMaker-Pro-19-3-1-Release-Notes

Las pruebas de la entrada anterior están hechas con el FM19 debidamente actualizado, concretamente muestra que estoy usando la versión 19.4.2.204 en Windows 10

En el enlace de Claris que precede a estas líneas podemos ver que las versiones anteriores a la 19.3.1 utilizan el motor de Internet Explorer. Pues bien, si resulta que el JavaScript que usamos utiliza el estándar ES6, lo más normal hoy, no funcionará con estas versiones de FileMaker:

https://www.w3schools.com/js/js_es6.asp

En este enlace anterior podemos ver que JS ES6 no está soportado por ninguna versión de Internet Exploter, ¡uy, perdón! “Explorer”.

JS ES5 Sí

https://www.w3schools.com/js/js_es5.asp

Con el estándar anterior de JS no debería haber problemas. En la tabla de compatibilidad vemos que aparece esta vez IE 9.0

Así que, llegados a este punto, habría dos opciones: o arremangarnos y reescribir el código JS utilizado, y sinceramente, antes me decantaría por uno de los doce trabajillos de Hércules, o buscar otra librería en JavaScript que se llevara bien con estas versiones de FileMaker, en la grata compañía del perro de Hades.

LazarSoft/jsqrcode

Una de las que tenía echado ya el ojo de antemano es esta:

https://github.com/LazarSoft/jsqrcode

Y había llegado a ella a través de este enlace:

https://ourcodeworld.com/articles/read/271/how-to-decode-a-qr-code-from-an-image-with-javascript

Ahí se explica muy claramente cómo leer un QR de una imagen con cuatro líneas de código y las librerías existentes en el enlace anterior de GitHub, además, pasando la imagen como una cadena en base64, justo lo que necesitamos.

Si no me decanté en un primer momento por esta serie de scripts es porque tienen ya una cierta antigüedad y en el apartado de cuestiones se presentan algunos problemas que no han sido resueltos. Sin embargo, tras probar alguna otra librería, esta es la única que he podido y sabido hacer funcionar en FM18

A mogollón

Para hacer funcionar esto en nuestro FM necesitaríamos crear 17 campos de texto globales, meter en ellos el contenido de cada uno de los scripts y cargarlos en el orden indicado:

Esto, aparte de ser una paliza, apareja que como cometamos el más mínimo error no nos va a funcionar, así que decidí simplificar las cosas, gracias a esta estupenda página:

https://www.toptal.com/developers/javascript-minifier/

Lo que he hecho ha sido copiar el código de cada uno de los scripts, “minificarlo” y después juntarlo todo en un único archivo JS en el orden indicado. El resultado se puede descargar del siguiente link:

qrall.zip

El archivo contiene el script qrall.js que es el que se ha creado según lo comentado. También contiene las fuentes y un html para comprobar el funcionamiento y que vamos a ver a continuación.

ourcodeworld.com

Comenzamos echando un vistazo al código que aparece en la mencionada web, la que nos ha puesto sobre la pista y que, recordamos, está aquí:

https://ourcodeworld.com/articles/read/271/how-to-decode-a-qr-code-from-an-image-with-javascript

El código funciona perfectamente y vemos que es muy simple: carga los scripts, pasa los datos de la imagen del QR en base64 y luego hay una función para decodificar el contenido de la imagen que se activa pulsando un botón.

Para nuestros propósitos, ese botón nos estorba bastante, así que vamos a simplificar todavía más este código y vamos a hacer que funcione directamente al cargar la página, ya que nosotros no colocaremos los datos de la imagen en el código sino que los leeremos de un campo, o de dos esta vez, pero para probar, y ver que funciona el script que hemos preparado, vamos a seguir poniendo todo en el código:

Parece largo, pero si le quitamos los comentarios y el código de la imagen se queda en nada. Vemos que los cambios que hemos realizado son la fusión de todos los scripts en uno solo y que hemos modificado un poquito la función que ahora se lanza al acabar de cargar la página.

Este html está incluido en el zip, se llama «prueba.html» y funciona perfectamente. Se puede probar, que para eso está. Al ejecutarlo mostrará en pantalla «https://wampirius.com». Y, por si alguien piensa que hay truco, en el mismo archivo está comentada una página donde se puede copiar el contenido de la variable, pegarlo y mostrará el QR utilizado.

Bien, pues con esto ya funcionando, podemos ir preparando el campo de cálculo del archivo FileMaker que vamos a crear.

Bueno, aquí lo suyo sería preparar primero el FileMaker y luego preparar el contenido del campo de cálculo para el visualizador, pero ya que estamos con el código, por seguir este orden, vamos a centrarnos en el código apuntando los nombres que deberemos dar a los campos.

Hay una cosa que difiere de la anterior entrada, que aquí sí que hay que poner el tipo de imagen que estamos pasando, lo podemos ver que se indica al principio del contenido de la variable «imageURI». Vamos, por tanto, a necesitar un campo en FileMaker que nos devuelva el tipo de imagen, a ese campo lo llamaremos tipoimagen. Nos ocuparemos de él cuando creemos el archivo FM.

El resto de la variable imageURI lo compone el código en base64, así que eso vendrá de un campo que llamaremos qrbase64.

Por último, necesitaremos un campo de texto con almacenamiento global para contener el script en JS. A ese campo lo llamaremos como al script: qrall.

Y con estos datos ya podemos adaptar nuestro «prueba.html» a lo que será el contenido del campo de cálculo que servirá para mostrarse en el visualizador web:

Luego lo pondremos en formato copy&paste, de momento es sólo para hacernos una idea.

FileMaker

Sencillito, lo suficiente para probar.

Cinco campos:

    • qrall: De texto con almacenamiento global para meter el script. Tendremos que copiar a este campo el texto del script qrall.js que se encuentra en el zip que se puede descargar un poco más arriba.
    • qr: Contenedor donde arrastraremos las imágenes.
    • qrbase64: De cálculo con resultado texto.
    • tipoimagen: De cálculo con resultado texto para extraer la extensión de la imagen.
    • resuelve: De cálculo con resultado texto  que generará el código que habrá de interpretar el visualizador.

Contenido de los campos de cálculo

qrbase64: Este ya es conocido de entradas anteriores, el contenido del mismo es el siguiente:

Base64EncodeRFC ( 4848 ; qr )

tipoimagen: Es curioso, GetContainerAttribute puede darnos un montón de cosas… menos la extensión, manda narices. Bueno, pues la forma de sacarla por la que he optado es la siguiente: obtenemos el nombre completo del archivo del contenedor, sustituimos los puntos que pueda haber por espacios para, digamos, convertir el nombre en una frase y de dicha frase nos quedamos con la palabra de la derecha.

RightWords ( Substitute ( GetContainerAttribute ( qr ; "filename" ) ; "." ; " " ) ; 1 )

resuelve: Es el campo que ya hemos visto antes. El código para copiar y pegar es el siguiente:

"<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=Utf-8'>
<script>" & qrall & "</script>
</head>
<body>
<script>
var imageURI = 'data:image/" & tipoimagen & ";base64," & qrbase64 & "'; 
window.onload = function() {
qrcode.decode(imageURI);
qrcode.callback = function(decodedInformation){
var resultado = decodedInformation;
document.write(resultado);
};
}
</script>
</body>
</html>"

Visualizador web

Ya sólo queda, en presentación, instalar el visualizador web indicándole una dirección web personalizada, para la cual seleccionaremos el campo resuelve:

Y listo para su uso:

Dejo aquí el ejemplo por si alguien se lo quiere descargar:

QR_FM18

Resumiendo

Sí que es posible leer QR con versiones anteriores a FM19, pero el motor que usa el visualizador hace que no pueda entender expresiones del último estándar de JS, que ojo, no es que sea de anteayer, salió en junio de 2015.

Y repito, que los scripts que he usado aquí no son precisamente los mejores. Hay QR que no pueden leer, bien por tamaño, por densidad, por tipo… Por lo que estos scripts no deberían usarse para ningún desarrollo serio, sino exclusivamente como un punto de partida y experimentación.

Esto es sólo un ejemplo de que con FM < 19.3.1 sí que se pueden leer QR, aunque con ciertas limitaciones.

Hasta la próxima!

La imagen de portada está realizada a partir de una fotografía de Mabel Amber en Pixabay

Leer un código QR con FileMaker en una imagen de un campo contenedor

En esta entrada vamos a ver cómo leer el código QR de una imagen en JPG de un campo contenedor de FileMaker 19, pasando el resultado a un campo de texto.

Aquí estamos otra vez con más FileMaker y más JavaScript: ¡Más Melocotones!

Vaya por delante lo que ya he comentado en alguna ocasión, que no soy ningún experto. Ni soy experto en FileMaker ni lo soy en JavaScript. Aviso esto porque esta entrada, aunque funciona, me sigue quedando la impresión de que se podría hacer lo mismo pero mejor y de una forma más directa… o no, luego me explico… o no.

Bueno, al tajo. Resulta que en la entrada “Generar códigos QR con FileMaker”, Marcos planteó la siguiente cuestión:

¿Es posible realizar el proceso inverso? me explico:
La idea es (hablando de Filemaker) leer o escanear el código siendo este una imagen insertada en un campo contenedor y obtener el resultado en un campo de texto.

Y me picó la curiosidad.

Comencé a buscar en el bendito GitHub algún desarrollo en JavaScript para leer códigos QR. Hay unos cuantos y al final me decanté por este porque está bastante actualizado y muy bien currado:

https://github.com/mebjas/html5-qrcode

Que además también tiene una entrada en su blog:

https://blog.minhazav.dev/HTML5-QR-Code-scanning-support-for-local-file-and-default-camera/

Estuve haciendo unas cuantas pruebas intentando leer el código directamente de la imagen, y aunque con los ejemplos en HTML funcionaba, usando un input, si intentaba prescindir de ese input y/o hacer eso mismo en FileMaker, cargar la imagen directamente a una función, no conseguía ningún resultado positivo. Algo no estaba haciendo correctamente, pero no sabía el qué.

El caso es que me cansé de probar y decidí cambiar de estrategia: ¿Y si pasaba la imagen a base64 e intentaba leer el QR así? Era dar un rodeo, pero si funcionaba…

Obviamente eso suponía buscar otra librería, así que me lancé a ello, pero mira tú por dónde, encuentro esta página que dice que hace eso con la misma que estoy usando, aunque modificándola ligeramente:

https://sandi-fajariadi.medium.com/detect-qr-code-from-an-image-using-javascript-ba30b0aa7d59

¡Y funciona, vaya si funciona!

Sandi Fajariadi muestra en su página un código que nosotros vamos también a modificar otro poquito. Para empezar, él extrae el tipo de fichero de la cadena en base64 y luego elimina la cabecera. Nosotros, en FileMaker, generamos la cadena en base64 sin la cabecera y vamos a asumir que usamos siempre ficheros en JPG. Teniendo esto, si queremos usar otro tipo de ficheros sería fácil adaptar el código si es que hiciera falta.

Al lío.

Lo primero que haremos será descargarnos el script en JS. Si vamos al apartado “minified”:

https://github.com/mebjas/html5-qrcode/tree/master/minified

Encontramos esta advertencia:

If you are not using any loader, you can get the latest UMD javascript code in production from https://unpkg.com/html5-qrcode

Así que nos lo bajamos del mencionado enlace.

A continuación, vamos a realizarle la modificación indicada por Sandi Fajariadi:

Tan simple como con un editor de texto buscar la cadena de arriba y sustituirla por la de abajo. Y con esto ya tenemos el script listo para nuestros propósitos.

Vamos a probar: Crearemos en FileMaker un fichero sencillo con los siguientes campos:

    • qrcode: que contendrá el script que acabamos de bajar y preparar. Será un campo de texto con almacenamiento global
    • imagen: un campo contenedor donde meteremos los QR
    • base64: un campo de cálculo con resultado texto que codificará en Base64 la imagen del contenedor
    • resuelve: un campo de cálculo, con resultado texto, que será el que genere la web que procesará el visualizador.
    • resultado: un campo de texto donde pegaremos el resultado de “leer” el QR

También crearemos un guion para pasar el valor de la variable al campo de texto que bautizaremos como «resultprint«.

Y así, sabiendo todos estos datos, podemos ir preparando el cálculo para el campo “resuelve”, que quedará así:

¡Que no cunda el pánico! Más adelante, cuando hagamos la prueba con el FileMaker lo ponemos para copiar y pegar. De momento es sólo para echarle un vistazo.

Las únicas diferencias con el código de Fajariadi es que prescindimos de leer y eliminar la cabecera, de mostrar los errores (si los hubiera) por consola, ya que eso no nos es útil en FM, y que el resultado lo metemos en la última función en una variable que es la que pasaremos  al guion con PerformScripWithOption

Código de la web de Sandi Fajariadi mostrando las zonas donde hemos realizado los cambios.

Preparando el FileMaker

Como hemos comentado antes, vamos a crear un ficherito sencillo con los mencionados campos:

Poca complicación, como puede verse. Lo único el contenido de los campos de cálculo. Para el «base64» la fórmula será la siguiente:

Base64EncodeRFC ( 4648 ; imagen)

Más información:

https://help.claris.com/es/pro-help/content/base64encoderfc.html

El contenido del campo de cálculo «resuelve«, listo para copiar y pegar, es este:

"<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=Utf-8'>
<script>" & qrcode & "</script>
</head>
<body>
<div id='reader'></div>
<script>
var base64image = '" & base64 & "';
var resultado;
function base64ImageToBlob(str) {
var type = 'jpg';
var b64 = str;
var imageContent = atob(b64);
var buffer = new ArrayBuffer(imageContent.length);
var view = new Uint8Array(buffer);
for(var n = 0; n < imageContent.length; n++) {
view[n] = imageContent.charCodeAt(n);
}
var blob = new Blob([buffer], { type: type });
return blob;
}
function getQRCode(imageBase64) { 
var imageBlob = base64ImageToBlob(imageBase64);
const html5QrCode = new Html5Qrcode('reader');
html5QrCode.scanFile(imageBlob, false)
.then(qrCodeMessage => {
setQRCode(qrCodeMessage);
}); 
}
function setQRCode(QRCode) {
resultado = QRCode;
FileMaker.PerformScriptWithOption ( 'resultprint', resultado, '0' );
}
getQRCode(base64image);
</script>
</body>
</html>"

Una pequeña actualización:

He estado haciendo unas pruebas y fruto de ellas ha sido someter a dieta al campo anterior, eliminando casi todas las funciones y simplificándolo, el resultado es el siguiente, que hace exactamente lo mismo pero con menos líneas:

"<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=Utf-8'>
<script>" & qrcode & "</script>
</head>
<body>
<div id='reader'></div>
<script>
var b64 = '" & base64 & "';
var type = 'jpg';
var imageContent = atob(b64);
var buffer = new ArrayBuffer(imageContent.length);
var view = new Uint8Array(buffer);
for(var n = 0; n < imageContent.length; n++) {
view[n] = imageContent.charCodeAt(n);
}
var imageBlob = new Blob([buffer], { type: type });
const html5QrCode = new Html5Qrcode('reader');
html5QrCode.scanFile(imageBlob, false).then(function(qrCodeMessage){
var resultado = qrCodeMessage;
FileMaker.PerformScriptWithOption ( 'resultprint', resultado, '0' );
});
</script>
</body>
</html>"

Y falta el script de JS que habrá que incluir en el campo qrcode en el que, además de la modificación de Fajariadi hemos eliminado la primera línea con el comentario relativo a la licencia, que me fastidia, pero en ocasiones he tenido problemas con JavaScript en FileMaker si llevaba comentarios, espacios, etc. No obstante, la primera línea eliminada es esta:

/*! For license information please see html5-qrcode.min.js.LICENSE.txt */

Y el script lo paso a este archivo de texto para poder descargarlo, abrir con cualquier editor de texto y directamente copiar y pegar en el campo de texto:

html5-qrcode.min-MODIFICADO.txt

Por supuesto, ahora tenemos que ir a «presentación» y crear un visualizador web para que procese todo:

Ampliamos las opciones, para refrescar la memoria, ya que en alguna entrada anterior las hemos colocado igual:

Aquí el visualizador web es enorme, pero no lo necesitamos ver para nada, aunque tiene que estar. Recordad que una opción, cutre pero efectiva, es darle una dimensión de un pixel y colocarlo donde no moleste.

Vamos ahora, por último, con el guion que necesitamos para que tome el valor de la variable de JavaScript y lo coloque en el campo de texto, obteniendo en claro el contenido del QR que es lo que hemos venido a buscar:

Como ya vimos en entradas anteriores, un par de líneas: En la primera establecemos una variable, le decimos que tome el valor de ScriptParameter y en la segunda establecemos un campo, el de texto, y que coloque el valor de la variable.

Probando

Y llega el momento de saber si todo esto funciona (Atención, spoiler: ¡Funciona! 😀 )

Apañamos un poco la presentación, ponemos el visualizador a la derecha, ordenamos un poquito los campos y a ver qué pasa. No hace falta tampoco tener los campos visibles, esto es sólo para probar.

Vamos a una de las entradas que tenemos por melocotones y hacemos una captura de un QR y lo guardamos como JPG, por ejemplo este:

El contenido del mismo es «Lo que quieras poner»

Ahora, creamos nuestro primer registro y arrastramos el fichero hasta el campo contenedor, a ver qué pasa:

Y ahí lo tenemos.

Vamos a probar con otro y se lo vamos a complicar algo. Capturamos el QR que tenemos aquí: https://www.wampirius.com/revisado-codigos-qr-con-filemaker-parte-ii-tamano-de-impresion/ y no nos molestamos ni en quitar las flechas y, ojo a esto, la captura es en png y se la colocamos tal cual en ese formato:

¡Fantástico! el desarrollo de Minhaz es una auténtica joya. Ha leído el QR sin importarle la «basurilla» añadida. Además, lo curioso ha sido que lo que hemos arrastrado a FileMaker ha sido un archivo en PNG, y al script le estamos diciendo que es un JPG (ver línea 13). Teóricamente esto «no» debería haber funcionado, pero lo ha hecho, y ahora mismo no sé si es por cómo está programada la librería o por cómo almacena FileMaker las imágenes. En cualquier caso esto ha sido una prueba y no conviene fiarse de que vaya a funcionar sea cual sea el formato. En caso de querer usar más de un formato, lo suyo sería averiguar el tipo de formato y meterlo en la variable.

Una vuelta de tuerca más y acabamos ¿Y si lo giramos un poco, no 90 o 180 grados, sólo un poco…?

Me reafirmo en lo dicho: esta librería es una auténtica joya. Tengo que probar el resto de formatos que soporta, pero es extraordinaria.

Edito: Como me han pedido el archivo fmp12 por mail, dejo aquí una versión del mismo, un pelín diferente a la de los ejemplos anteriores, que muestra también el contenido del QR en el campo contenedor. Es una sobre la que he estado haciendo pruebas para una entrada posterior. Funciona perfectamente en versiones de FileMaker 19.3.1 y posteriores:

leerqr_FM19

Gracias a Minhaz por este pedazo de trabajo y gracias también a Sandi Fajariadi por su aportación sobre Base64 y su ajuste sobre el script de Minhaz. Gracias a estos dos genios ha sido posible el desarrollo de esta entrada. Es todo el mérito suyo, un servidor no ha hecho sino juntar las piezas.

¡Hasta la próxima fruta (u hortaliza, u lo que sea…)!

Nota: La imagen de cabecera está sacada de Pixabay y su autor es Xavier Turpain (xat-ch)