Pull to refresh

Comments 5

UFO just landed and posted this here
Да, до 31 августа. Опечатались. Спасибо за комментарий.
UFO just landed and posted this here

Спасибо за взгляд со стороны! Поскольку решения очень разноплановые, а уровень формализации совсем не такой, как на kaggle, то кажется git является неплохим вариантом подачи решений. Я не представитель АСИ, но мне кажется это мероприятие не про "заработать денег на решении", а про "сделать мир лучше". АСИ умеет помогать налаживать контакты, а уж дальше каким будет внедрение — зависит от вас.

Спасибо за статью. Это было интересно, правда в основном в первой половине.
Однако у меня есть два серьёзных дополнения:

Во-первых, существует такой продукт как Braille Reader VDL, который был разработан в России много лет назад, и поставлялся заинтересованным заказчикам (в том числе за границу) как коммерческое решение обсуждаемой задачи. Правда там скорей задача оцифровки документа чтобы отсканировать книгу и сохранить её для возможной повторной печати, то есть без распознавания именно смысла текста.

Во-вторых, некоторые вопросы к вашей статье появляются как раз во второй части, где вы переходите от задачи распознавания точечных символов к получению по ним конкретного текста.
Возможно я ошибаюсь, но у меня создалось впечатления что вы недостаточно хорошо представляете себе специфику рельефно-точечного шрифта Брайля (да, именно шрифта или максимум алфавита, но никак не языка, как у вас местами написано).

Прежде всего, Брайль — это система, в которой знаки составляются из ячеек по 6 (в особых случаях по 8) точек).
На листе будет фиксированное количество строк и фиксированное количество столбцов, а само шеститочие/восьмиточие даже при разных форматах листов плюс-минус одного размера, комфортного для тактильного восприятия.
То есть логично сначала определить условную сетку ячеек на листе, а потом анализировать каждую получившуюся ячейку. Думаю, это повысит устойчивость к ошибкам из-за шума: если какой-то артефакт на изображении есть не в сетке, то его в принципе можно игнорировать.
Ну и, как я уже написал, размер ячейки и точек сильно не различается, так что там должны быть плюс-минус одни и те же пропорции. В частности, в России есть вообще конкретный стандарт по параметрам брайлевской печати — ГОСТ Р 56832-2015 Шрифт Брайля. Требования и размеры

На этом этапе я бы советовал результаты распознавания сохранить как есть, то есть в виде комбинаций точек. В частности, существует две распространённые системы кодирования: Braille ASCII и Braille Patterns.
На Braille ASCII базируется такой формат документов, как BRF. То есть фактически мы сможем легко отправить отсканированный текст снова на печать. Это полезно, когда, например, мы сканируем старую книгу с целью подготовки её переиздания. Вышеупомянутый продукт Braille Reader VDL как раз решал эту задачу, которая была сильно востребована в библиотеках, желавших спасти старые брайлевские издания нот.
Зато нотация Braille Patterns кодирует не 6, а 8 точек брайлевского знака, да и может быть легко сконвертирована в Braille ASCII. Правда восьмиточечный Брайль не используется в бумажной форме, так что вряд ли это актуально для задачи сканирования.

Ну и вот что касается уже получения текста из комбинаций брайлевских точек, то сложность этой части, как мне показалось, вы как раз сильно недооцениваете.
Дело в том, что одна брайлевская ячейка совсем не соответствует какому-то символу. У шеститочия всего 64 варианта (считая пробел), поэтому там просто не хватает вариативности.
В итоге, вбрайлевском письме целый ряд символов кодируется одинаковым набором точек и их трактовка зависит либо от контекста, задаваемого окружением, либо вообще от чисто смыслового контекста. Причём, контекст окружающих символов может задаваться не только в соседних ячейках, но и существенно дальше. Например, строки
  • 1234567890
  • abcdefghij
  • абцдефгхиж
  • αβφδεφγθιη

будут писаться в Брайле абсолютно одинаково, а их трактовка как цифр или букв зависит от специального знака в начале, у которого нет аналогов в обычном письме.
Также важно учитывать пробелы, так как пробельное обрамление тоже задаёт контекст, например, если стоит брайлевский знак ⠖ сразу после текста, то это восклицательный знак, а если перед ним есть пробел, то это плюс.
По этим причинам просто сопоставить комбинации точек с какими-то символами и выполнить эквивалентную замену не получится. Такой прямолинейный алгоритм не работает даже при конвертации обычного текста в брайлевские обозначения, а уж в обратную сторону и подавно.

В индустрии вспомогательных технологий в основном решается задача трансляции обычного текста в брайлевский, потому что именно она наиболее востребована (брайлевские дисплеи, подготовка текстов к печати и т.д.). Но есть open source библиотека Liblouis*, которая является наиболее распространённым решением и теоретически обеспечивающем трансляцию в обе стороны.
Однако трансляция брайлевского текста в обычный в любом случае сложнее и менее надёжна, чем обычного в брайлевский, да к тому же уровень поддержки языков в брайлевских трансляторах сильно разнится. В частности, поддержка русского оставляет желать много лучшего даже при трансляции обычного текста в брайлевский.
Я сомневаюсь, что эту задачу даже на минимальном уровне смогут решить случайные люди, толком не знающие Брайля, да к тому же с наскока за несколько недель. Мне кажется, что вся сложность этой задачи вами сильно недооценивается.

Думаю, полезнее сосредоточиться на решении чисто задачи сканирования брайлевского текста с последующим распознаванием в нотацию Braille ASCII или Braille Patterns. Это абсолютно реально для современных систем компьютерного зрения и относительно несложно, так что вполне можно собрать рабочий прототип за пару недель. Это будет полезно как раз для сохранения старых брайлевских изданий, для которых уже не осталось цифровых исходников или типографских матриц для нового тиража.
Ну а задачу трансляции брайлевского текста в обычный стоит решать уже в рамках отдельной исследовательской работы, где на вход сразу принимать эти строго формализованные нотации описания брайлевских символов, или же сразу приходить в проект Liblouis* и делать вклад в него.
Sign up to leave a comment.