Разделяйте рукописные буквы — автоматически

в дополнение к вопросу, заданному в разделе Как разбить отсканированные письма с помощью Gimp или Inkscape? : есть ли способ сделать это автоматически, в том смысле, что мне не нужно сначала выбирать каждый «заполняемый знак» и выполнять «Объединить»?

Я хочу разделить буквы целой страницы, так что это будет довольно утомительная работа.

ИЗМЕНЕНИЕ: Я не собираюсь распознавать буквы. Я хочу иметь возможность сканировать/фотографировать рукописные заметки и преобразовывать их в векторную графику svg, чтобы я мог продолжать редактировать заметки с помощью моего любимого приложения для создания заметок «Stylus Write (styluslabs.com)».

Чтобы иметь возможность перемещать текст, буквы должны быть отдельными путями. Разрыв работает нормально, но наличие всех заполненных букв довольно уродливо.

введите описание изображения здесь введите описание изображения здесь

Смутно связанные → Есть скрипт для Photoshop, который делает это: Разделить на слои .

Ответы (2)

Попробуйте автотрассировку центральной линии. Он делает кривые, а не заполненные замкнутые пути. Пример (это ерунда как в математике, так и в физике, но с правильными закорючками):

введите описание изображения здесь

  1. Растровое изображение

  2. Центральная линия Autotrce применяется с настройками по умолчанию 1. Это комбинированный путь.

  3. После применения Path > Break Apart и ручного перемещения каждого отдельного элемента немного в сторону, чтобы увидеть, какие осколки на самом деле генерируются.

Это не намного лучше, чем метод, предложенный уже в другом ответе, потому что нужно сгруппировать или объединить части одного символа, если он хочет гарантировать, что они не разойдутся случайно.

Я попробовал также ваш скриншот. Результат с Centerline Autotrace был безнадежным беспорядком. Стало намного лучше, когда разрешение скриншота было поднято с помощью Smilla Enlargener (=без размытых краев) до 300%. Центральная линия Autotrace по-прежнему потеряла маленькую точку и сделала один =-символ похожим на толстый минус. Вот результат после разбиения всего на части и изменения некоторых цветов обводки:

введите описание изображения здесь

Настройки трассировки были такими:

введите описание изображения здесь

Я предполагаю, что полностью надежные результаты требуют сопоставления с образцом в системе, которая знает предполагаемые математические символы. Другие предложили OCR, что по сути означает то же самое. Автотрассировка центральной линии может быть достаточно хорошей, если вы станете более дисциплинированными — нарисуйте самые маленькие точки достаточно большими.

Большое спасибо за ответ, это выглядит многообещающе. Один вопрос: «Smilla Enlargener (= без размытых краев)» — это встроенная функция Inkscape?
Это отдельная бесплатная программа. Он увеличивает разрешение растровых изображений без расширения границ и линий шириной 1 пиксель. On1 Resize является сопоставимым коммерческим эквивалентом, за исключением того, что он также поддерживает цвета CMYK. Они часто делают удивительно точные предположения о том, каким было бы изображение с низким разрешением, если бы оно имело большее разрешение. Масштабирование до большего размера бесполезно, но эти программы, кажется, делают правильные предположения.

TL;DR Невозможно (насколько я знаю).

Если это векторы, то их нельзя редактировать в GIMP. GIMP — редактор растровых изображений. GIMP может использовать пути, но имеет крайне ограниченную функциональность в отношении векторов. Это не правильный инструмент.

Если это векторы, то в Inkscape вам нужно будет вручную перекомпоновать части букв после их разделения. Нет никакого способа сделать это автоматически. Inkscape ничего не знает о символах. Inkscape не имеет функции распознавания символов. Все, что он видит, это пути, которые либо выбраны, либо нет. Таким образом, ответ на ваш вопрос в основном «Нет» в том, что касается автоматизации.

Для небольших работ это не так утомительно. Используйте инструмент «Выделение» S, чтобы окружить части, которые вы хотите объединить, затем используйте сочетание клавиш « CtrlK, чтобы объединить. Очевидно, что целая страница — это другое дело.

Пример

введите описание изображения здесь

В конечном счете, вам может быть лучше поискать программное обеспечение OCR (оптическое распознавание символов) / распознавание рукописного ввода, чтобы распознать почерк. Тогда вы сможете получить редактируемый текстовый вывод вместо векторов.

Спасибо Билли Керр за ответ. Я не собираюсь заниматься распознаванием букв. Я хочу иметь возможность сканировать / фотографировать рукописные заметки и преобразовывать их в векторный графический файл svg, чтобы я мог продолжать редактировать заметки с помощью моего любимого приложения для создания заметок «Stylus Write ( styluslabs.com ) » . Чтобы иметь возможность перемещать текст вокруг букв, должны быть отдельные пути. Разрыв работает нормально, но наличие всех заполненных букв довольно уродливо. Я подумал о том, чтобы написать сценарий для inkscape, чтобы полностью искать объекты внутри других объектов и выполнять над ними вычитание... Не уверен, что это стоит усилий.
@hveng Хотя это может быть возможно сделать таким образом, разработка такого сценария может занять больше времени, чем разработка вручную. Стоит ли оно того? Только вы можете решить. К сожалению, большая часть кода мне не по силам. В любом случае удачи.