Aplicació programada en Java, amb les llibreries organitzades en mòduls.
L'extracció de partides, la seva funció més destacada, es basa en un extractor que és una combinació d'analitzador lèxic amb un analitzador sintàctic
La primera versió d'aquest analitzador, permetia extraure partides en notació algebraica en diferents idiomes
Des de la versió v1.26 també es pot extreure partides en notació algebraica de figures
Aquesta nova funció es va programar basant-se en l'extractor de partidas ja existent, però afegint-li una capa que traduís les imatges de les figures les seves pròpies inicials, per a així poder aplicar l'extractor de partides ja existent
El traductor d'imatges a les inicials de les figures, s'ha implementat fent ús de l'algoritme de vei més proper, amb K = 1
És a dir, que pren de entre els exemples etiquetats de que disposa, el més proper en base a una mesura d'error.
Una altra funció interessant es la de reconeixement de posicions (afegida a la v1.20). D'una imatge d'un taulell, l'aplicació tracta d'obtenir la cadena FEN de la posició.
Aquesta funció està programada fent ús de la teoria d'un article d'IEEE que vaig comprar per a això:
- Amb una detecció de vores, es tracta d'obtenir la ubicació de les caselles del taulell.
- Si fou èxit, llavores es recorren totes les caselles, i es tracta de reconèixer la figura que hi ha a cada una d'elles o si està buida, amb l'algoritme de veí més proper.
- Si fou èxit reconeixent totes les caselles, llavors es presuposa que el reconeixement del taulell fou un èxit.
- Si no fou èxit el reconeixement de totes les caselles, l'aplicació mostra a l'usuari el taulell amb les caselles reconegudes, i se li demana que el completi, per a obtenir més exemples que li permetin el reconexement complert del taulell.
El reconeixedor de taulells, s'autoentrena quan s'extrauen les partides d'un PDF, ja que hi ha imatges de posicions que sí que son conegudes, i s'autoentrena amg elles per a obtenir exemples de caselles amb peces
Una funció també interessant que se es va afegir a la v1.20, és la d'extracció de metadades de les partides (noms dels jugadors, ELOs, data, lloc, ...).
Aquesta funció es basa en un sistema d'expressions regulars que contemplen molts formats de metadades amb els que m'he trobat durant les proves.
I una altra funció que pot ser interessant també afegida a la v1.20, és l'opció de connectar amb motors tipus UCI (com Stockfish).
Per a aquesta funció es va programar un configurador genèric de motors, que llegeix la configuració del motor durant la connexió i crea un formulari per a que l'usuari pugui modificar les opcions del motor.
A la versió v1.26, s'afegeix suport per a extreure partides en notació algebràica de figures.
Des de la versió v1.30, l'aplicació inclou un nou binari que permet crear un Pdf a partir d'un .pgn, amb dues opcions: aplicació d'interfície gràfica, o l'opció d'aplicació de línia de comandes, per a poder automatizar el procés.
A la versió v1.33 s'afegeix suport per a treballar amb Pdfs escanejats.