Написал небольшую программу, которая на скане страницы книги определяет «шахматную диаграмму» и вырезает её (или отмечает красным квадратом).
Ссылка на проект:
https://github.com/mcroitor/chessboard_extractor Саму программу (точнее, их 2) можно скачать здесь:
https://github.com/mcroitor/chessboard_extractor/releases/tag/0.0.2 В пакете две программы:
- markboards - отмечает диаграммы на страницы
- extractboards - вырезает диаграммы.
На самом деле программы определяют на рисунке квадраты, но на первых порах должно хватить.
Как с этим работать?
простейший способ:
- создайте в папке с программами папку in.
- в созданную папку перепишите сканы книги (tif, png, не рекомендуемый jpeg). PDF не поддерживается.
- откройте в блокноте файл config.ini.
- в строке format укажите расширение сканов.
- Для хорошего определения диаграмм укажите минимальный и максимальный возможные размеры в точках (min_board_size и max_board_size). Например, при размерах доски в 800 пикселей подойдут значения 700 и 900. Хотя можете навсегда выставить 200 и 1600, однако за качество распознавания не ручаюсь.
- Запустите программу extractboards.
- Будет создана папка с диаграммами. Если запустите markboards, то в результате будет создана папка с теми же страницами, но диаграммы будут обведены красным прямоугольником.
Не все диаграммы нашлись
Попробуйте поиграться с настройками:
- blur_size - может быть только нечётный, необходим для сглаживания разрывов.
- blur_standard, blur_median, blur_gaussian - включение / отключение соответствующих алгоритмов размытия
- contour_delta - отступ контура
- gap - значение ошибки в пикселях. Применяется, например, для определения «почти квадратов»
- treshold - используется в алгоритме Канни для определения ребер. В принципе, это очень неплохое значение, меняйте его в последнюю очередь.