Ya pude decodificar QR's hasta la versión 3... (29x29 módulos) en modos numérico, alfanumérico y byte (que son 3 de los modos en los que puede estar codificada la información en la matriz). Voy a seguir trabajando para ver si puedo incluir un par de niveles más en mi scritp (quisiera llegar al 8). Hasta ahora está funcionando bien.
Mi scritp está teniendo la siguiente estructura:
1. transformo un mapa de bits de cualquier dimensión y color (el QR) en una matriz que tenga la relación 1 pixel=1 módulo (1 cuadradito), en blanco y negro.
2. localizo en la matriz los 5 bits de información que corresponden a: los 2 primeros al nivel de redundancia y los 3 últimos al código de referencia de la máscara utilizada (la información contenida en el QR lleva una máscara). Esos 5 bits a su vez, también llevan una máscara.
3. una vez que sé cuál fue la máscara empleada en el QR, la quito
4. despues, ya con los datos "en crudo" le indico al script cuál es el orden en el que debe comenzar a leer los datos de la matriz (varía según la versión del QR)
5. El QR tiene varios tipos de información: información de formato (donde están esos 5 bits), informacion sobre la versión (a partir de la versión 7), los patrones de funcion (los de alineación, localización, posición, etc.), y la información propiamente dicha. Esa informacion (que es el contenido que nos importa) en varios casos tiene la estructura: INDICADOR DE MODO-INDICADOR DE CANTIDAD DE CARACTERES-DATOS-"TERMINADOR". Armo un vector que sea una secuencia de esos bits de información
6. despues divido el script en 3 partes, según la información esté en modo numérico, alfanumérico o byte. En cada caso proceso la información de manera distinta, porque están codificados de manera diferente.
7. trato de recuperar toda la información posible para mostrar en pantalla, no sólo el contenido.
Bueno voy a seguir trabajando en lo mío...si te puedo ayudar en algo me avisás Daniel. Saludos!!!