Приложение запрограммировано на Яве, библиотеки организованы в модулях.
Извлечение игр, его выдающихся функций, основано на парзере, который сочетает лексический анализатор с синтактическим анализатором.
Первоначальная версия этого парсера позволила вытащить игры в алгебраической записи на нескольких языках.
В версии v1.26 допускается добыча игр с использованием алгебраической нотификации деталей.
Эта новая функция была разработана путем расширения существующего игрового парзера, с тем чтобы он включал слой, который переводит снимки в их соответствующие инициалы.
С помощью ближайшего соседского алгоритма с K = 1 был осуществлен перевод изображения на первоначальный перевод
Переводчик выбирает ближайший вариант на основе показателя ошибки из помеченных им примеров.
Еще одна интересная особенность, введенная в версию 1.20, это распознавание местоположения. Прикладное приложение пытается определить строки FEN, анализируя изображение шахматной доски.
Эта функциональность основана на теориях из статьи IEEE, которую я купил для справки:
- Он нацелен на определение местоположения квадратов на шахматной доске путем обнаружения их сторон.
- В случае успеха приложение пересекает все квадраты и пытается распознать кусочки на каждом квадрате. Приложение попытается идентифицировать кусок с ближайшим соседским алгоритмом, если квадрат пуст.
- Если все квадраты будут успешно идентифицированы, предполагается, что доска будет также успешно идентифицирована.
- Если пользователь не может идентифицировать все квадраты, приложение покажет им доску с признанными квадратами и попросит заполнить ее для дополнительных примеров, чтобы полностью идентифицировать доску.
Когда игры извлекаются из PDF, читатель на доске получает самоподготовку, используя изображения известных позиций, которые помогают ему распознавать квадраты с кусочками
Версия 1.20 вводит новую функцию, которая выводит данные из игры meta с именами игроков, рейтингами ELO, датами и местами.
Эта функция использует систему регулярных выражений, в которой учитываются различные meta форматы данных, которые я встречал в ходе тестирования.
Еще одной интересной особенностью, добавленной в v1.20, является возможность подключения к двигателям, подобным UCI, таким, как Stockfish.
Я разработал для этой функции общий конвергентор двигателя. Он читает конфигурацию двигателя при подключении и создает форму для пользователей, чтобы модифицировать параметры двигателя.
В версии v1.26 была добавлена поддержка для извлечения игр в алгебраической записи из цифр.
Поскольку версия 1.30, приложение включает новый двоичный вариант, позволяющий создать PDF из файла.pgn, с двумя опциями: графическое приложение интерфейса, или опция командно-линейного приложения, для автоматизации процесса.
Версия v1.3.3 добавляет поддержку работе с отсканированными PDF.