Anwendung in Java programmiert, mit Bibliotheken in Modulen organisiert.
Die Extraktion von Spielen, seine herausragende Funktion, basiert auf einem Parser, der einen lexikalischen Analysator mit einem syntaktischen Analysator kombiniert
Die erste Version dieses Parsers ermöglichte die Extraktion von Spielen in algebraischer Notation über mehrere Sprachen hinweg
Ab Version v1.26 ist das Extrahieren von Spielen mit algebraischer Notation der Stücke zulässig.
Diese neue Funktion wurde entwickelt, indem der vorhandene Spielparser um eine Ebene erweitert wurde, die Stückbilder in ihre entsprechenden Initialen übersetzt.
Ein image-to-itials Übersetzer wurde mit dem nächsten Nachbaralgorithmus mit K = 1 implementiert.
Der Übersetzer wählt aus den beschrifteten Beispielen, die er gesetzt hat, die nächste Option, die auf einer Fehlermaßnahme basiert.
Ein weiteres interessantes Feature, das in Version 1.20 eingeführt wird, ist die Positionserkennung. Die Anwendung versucht, den FEN-String der Position zu bestimmen, indem sie ein Bild des Schachbretts analysiert.
Diese Funktionalität basiert auf Theorien aus einem IEEE-Artikel, den ich zur Referenz gekauft habe:
- Es zielt darauf ab, die Positionen der Quadrate auf dem Schachbrett zu bestimmen, indem sie ihre Seiten erkennen.
- Wenn die App erfolgreich ist, durchquert sie alle Quadrate und versucht, die Stücke in jedem Quadrat zu erkennen. Die App wird versuchen, das Stück mit dem nächsten Nachbaralgorithmus zu identifizieren, wenn ein Quadrat leer ist.
- Wenn alle Quadrate erfolgreich identifiziert werden, wird davon ausgegangen, dass das Board auch erfolgreich identifiziert wird.
- Wenn der Benutzer nicht alle Quadrate identifizieren kann, zeigt die Anwendung ihnen das Board mit den erkannten Quadraten und bittet um weitere Beispiele, um das Board vollständig zu identifizieren.
Wenn die Spiele aus einem PDF extrahiert werden, wird der Board-Reader mit Bildern bekannter Positionen selbst trainiert, die ihm helfen, Quadrate mit Stücken zu identifizieren.
Version 1.20 führt ein neues Feature ein, das Spieldaten meta extrahiert, einschließlich Spielernamen, ELO-Ratings, Daten und Orte.
Diese Funktion nutzt ein System von regulären Ausdrücken, die verschiedene metaDatenformate aufnehmen, die ich während des Testens gefunden habe.
Ein weiteres interessantes Feature in v1.20 ist die Möglichkeit, sich mit UCI-ähnlichen Motoren wie Stockfish zu verbinden.
Für diese Funktion habe ich einen generischen Motorkonfigurator entwickelt. Er liest die Motorkonfiguration nach dem Anschluss ab und generiert eine Form für die Benutzer, um die Motoroptionen zu ändern.
In der Version v1.26 wurde Unterstützung für das Extrahieren von Spielen in algebraischen Notation aus Zahlen hinzugefügt.
Seit Version 1.30 enthält die Anwendung eine neue Binärdatei, mit der Sie ein PDF aus einer.pgn-Datei mit zwei Optionen erstellen können: eine grafische Benutzeroberflächenanwendung oder eine Befehlszeilenanwendungsoption, um den Prozess zu automatisieren.
Version v1.33 unterstützt das Arbeiten mit gescannten PDFs.