Applicazione programmata in Java, con librerie organizzate in moduli.
L'estrazione dei giochi, la sua funzione più eccezionale, si basa su un parser che combina un analizzatore lessicale con un analizzatore sintattico.
La versione iniziale di questo parser ha permesso l'estrazione di giochi in notazione algebrica in più lingue.
A partire dalla versione v1.26, l'estrazione di giochi utilizzando la notazione algebrica dei pezzi è consentita
Questa nuova funzione è stata sviluppata migliorando il parser di gioco esistente per includere un livello che traduce le immagini pezzo nelle loro iniziali corrispondenti.
Un traduttore image-to-initials è stato implementato utilizzando l'algoritmo vicino più vicino con K 1
Il traduttore sceglie l'opzione più vicina in base a una misura di errore dagli esempi etichettati che ha impostato.
Un'altra caratteristica interessante introdotta nella versione 1.20 è il riconoscimento della posizione. L'applicazione tenta di determinare la stringa FEN della posizione analizzando un'immagine della scacchiera.
Questa funzionalità si basa sulle teorie di un articolo IEEE che ho acquistato per riferimento:
- Mira a determinare le posizioni delle piazze sulla scacchiera rilevando i loro lati.
- In caso di successo, l'app attraversa tutti i quadrati e cerca di riconoscere i pezzi in ogni quadrato. L'app cercherà di identificare il pezzo con l'algoritmo del vicino più vicino se un quadrato è vuoto.
- Se tutti i quadrati sono identificati con successo, si presume che anche la scheda sia identificata con successo.
- Se l'utente non è in grado di identificare tutti i quadrati, l'applicazione mostrerà loro la scheda con i quadrati riconosciuti e chiesto di completarlo per ulteriori esempi per identificare completamente la scheda.
Quando i giochi vengono estratti da un PDF, il lettore di schede è auto-addestrato utilizzando immagini di posizioni note, che aiutano a imparare a identificare i quadrati con i pezzi.
La versione 1.20 introduce una nuova funzionalità che estrae i dati del gioco meta, inclusi i nomi dei giocatori, le valutazioni ELO, le date e le posizioni.
Questa funzione utilizza un sistema di espressioni regolari che ospita vari meta formati di dati che ho incontrato durante il test.
Un'altra caratteristica interessante aggiunta in v1.20 è la possibilità di connettersi a motori simili a UCI, come Stockfish.
Ho sviluppato un configuratore generico del motore per questa funzione. Legge la configurazione del motore al momento della connessione e genera un modulo per gli utenti per modificare le opzioni del motore.
Nella versione v1.26, è stato aggiunto il supporto per l'estrazione di giochi in notazione algebrica da figure.
Dalla versione 1.30, l'applicazione include un nuovo binario che consente di creare un PDF da un file.pgn, con due opzioni: un'applicazione di interfaccia grafica o un'opzione di applicazione a riga di comando per automatizzare il processo.
La versione v1.33 aggiunge il supporto per lavorare con i PDF scansionati.