Application programmée en Java, avec des bibliothèques organisées en modules.
L'extraction des jeux, sa fonction la plus remarquable, est basée sur un analyseur qui combine un analyseur lexical avec un analyseur syntaxique
La version initiale de cet analyseur a permis l'extraction de jeux en notation algébrique dans plusieurs langues.
À partir de la version v1.26, l'extraction des jeux en utilisant la notation algébrique des pièces est autorisée.
Cette nouvelle fonction a été développée en améliorant l'analyseur de jeu existant pour inclure un calque qui traduit les images des pièces en leurs initiales correspondantes.
Un traducteur image-vers-initiales a été implémenté en utilisant l'algorithme de voisin le plus proche avec K 1
Le traducteur choisit l'option la plus proche en fonction d'une mesure d'erreur parmi les exemples étiquetés qu'il a définis.
Une autre caractéristique intéressante introduite dans la version 1.20 est la reconnaissance de position. L'application tente de déterminer la chaîne FEN de la position en analysant une image de l'échiquier.
Cette fonctionnalité est basée sur les théories d'un article de l'IEEE que j'ai acheté pour référence:
- Il vise à déterminer les positions des cases sur l'échiquier en détectant leurs côtés.
- En cas de succès, l'application parcourt tous les carrés et essaie de reconnaître les pièces de chaque carré. L'application essaiera d'identifier la pièce avec l'algorithme le plus proche si un carré est vide.
- Si tous les carrés sont identifiés avec succès, on suppose que le tableau est également identifié avec succès.
- Si l'utilisateur ne peut pas identifier tous les carrés, l'application lui montrera le tableau avec les carrés reconnus et lui demandera de le compléter pour plus d'exemples afin d'identifier le tableau entièrement.
Lorsque les jeux sont extraits d'un PDF, le lecteur de plateau est auto-entraîné à l'aide d'images de positions connues, ce qui l'aide à apprendre à identifier les carrés avec des pièces.
La version 1.20 introduit une nouvelle fonctionnalité qui extrait les données du jeu meta, y compris les noms des joueurs, les classements ELO, les dates et les emplacements.
Cette fonctionnalité utilise un système d'expressions régulières qui s'adapte à divers formats de données meta que j'ai rencontrés lors des tests.
Une autre fonctionnalité intéressante ajoutée dans la v1.20 est la possibilité de se connecter à des moteurs de type UCI, tels que Stockfish.
J'ai développé un configurateur de moteur générique pour cette fonctionnalité. Il lit la configuration du moteur lors de la connexion et génère un formulaire permettant aux utilisateurs de modifier les options du moteur.
Dans la version v1.26, le support a été ajouté pour extraire des jeux en notation algébrique à partir de figures.
Depuis la version 1.30, l'application inclut un nouveau binaire qui vous permet de créer un PDF à partir d'un fichier.pgn, avec deux options: une application d'interface graphique, ou une option d'application de ligne de commande, pour automatiser le processus.
La version v1.33 ajoute la prise en charge des fichiers PDF numérisés.