Типичные ошибки распознавания - собираем статистику для скрипта ФБЕ

Собираю статистику по наиболее частым типичным ошибкам распознавания для включения их в скрипт ФБЕ:

Варианты:
пе (не), оп (он), пи (ни), ва (за), пее (нее), опа (она)...

Прошу участвовать всех желающих.

Дополненный список я хочу включить в недавно обновленный скрипт "Поиск по набору регэкспов", автор Sclex (http://groups.google.com/group/fiction-book-editor/browse_thread/thread/b4700ee54d255384), работающий под ФБЕ.
Собранная статистика еще больше упростит отлов косяков сканирования и, соответственно, позволит более качественно и быстро делать верстку отсканенных книг и быстрее находить косяки в уже сделанных книгах тем, кто занимается их правкой-вычиткой.

Сейчас данный скрипт у меня ищет:
- смесь латиницы с кириллицей во всех вариантах,
- смесь букв с цифрами,
- неправильные дефисы-тире,
- мусор после скана,
- концы строк без знаков препинания
- неполный курсив слова
- указанные выше типичные ошибки распознавания
и другие подозрительные места.

Использование этого скрипта заметно сокращает время работы над книгой в ФБЕ.

Комментарии

Sclex написал:
http://rghost.ru/3908064
Ага, сенькс, поиграюсь...

У меня на памяти только 3 часто встречающихся варианта с "ф":
фоб -гроб
неф - негр
фаната - граната

NickNem написал:
У меня на памяти только 3 часто встречающихся варианта с "ф":
фоб -гроб
неф - негр
фаната - граната

фазу - сразу

А если рядом получаются Ь или Ы и любая специфическая буква кириллицы - то тоже крах. : типа -ьф, -шь, -ьш, итд..

угу, бьш и бьша у меня просто фавориты из последнего скана.... (был и была)

Самая безнадега в распознавании дореформенной орфографии. А Файны всё хвалятся...

Как раз сейчас делаю книжку с дореформенной орфографией. Ошибок не больше, чем при обычном скане. Все ошибки типичны и исправляются обычным "Изменить на...".

Алексей_Н написал:
Как раз сейчас делаю книжку с дореформенной орфографией. Ошибок не больше, чем при обычном скане. Все ошибки типичны и исправляются обычным "Изменить на...".

Вам повезло.

Не сказал бы, что все так страшно. Дореформенные книги FR9 распознаются вполне на уровне. Яти, фиты, еры и прочее распознаются на ура.
С дореформенными сложность скорее возникает в правке орфографии. Впрочем от скрипта чистящего старую орфографию я бы тоже не отказался бы.)

Ханурик написал:
Впрочем от скрипта чистящего старую орфографию я бы тоже не отказался бы.)

Скрипту совершенно по барабану правила любого языка. Что напишут - то и будет искать
Так что набрасывайте примеров косяков из старой орфографии и пользуйтесь )

есть такакая прога ocr pad
статистика там большая вроде
но как её взять не знаю

пропустил своп, (хотя это свои) пропустил па (на) , пропустил слово просплп ( просили)
малень– кой ( маленькой) Поляиовке ( Поляновке ) Дем?нтий (Дементий) M це иске ( Mценске ) поляновски? (поляновские) до– черьми (дочерьми) Лйя (Лия) втот (этот) втот (этот) ваписка (записка) втот (этот) стоа (стон ) Ht (ж) їдейственная (единственная) обрывкн (обрывки) маркиэка (маркизка)

В каждой книжке есть свои заморочки.
"Малень- кой", "до- черьми" - не распознан знак переноса.
"Дем?нтий" - скорей всего буква вместо вопросительного знака стояла под ударением.
Надо ли всё это включать в общий скрипт?

Аватар пользователя Captain Scarlett

Алексей_Н написал:
В каждой книжке есть свои заморочки.
"Малень- кой", "до- черьми" - не распознан знак переноса.
"Дем?нтий" - скорей всего буква вместо вопросительного знака стояла под ударением.
Надо ли всё это включать в общий скрипт?

Стоит включить "- ".
"?" в середине слова ловится "слипшимися словами".

"- " вроде тоже ловится "слипшимися словами".

Алексей_Н написал:
"Малень- кой", "до- черьми" - не распознан знак переноса.
Это лучше ловить в файн-ридере...

peshehodrost написал:
[...] Поляиовке [...] Лйя (Лия)
Таки да. Весьма неестественные буквосочетаия.

Часто встречаю: "ведено" вместо "велено", "юнкере" вместо "юнкерс" (второй, вероятно, родственник "Тайме").

Внесены добавки в скрипт, согласно многим вашим комментам...

На всякий случай уточняю, что скрипт только ищет подозрительные места, и ничего автоматом не заменяет, во избежание...
Любую строчку можно поправить или отключить, (стерев полностью или закомментировав ее с помощью // )

Не получается запостить корректно все строки скрипта, поэтому просто дам ссылку на обновленную версию:

http://narod.ru/disk/3209760001/Poisk_po_naboru_regexpov_TaKir_2_6.rar.html

Если какие-то еще явные косяки кто вспомнит-придумает - прошу отзываться.
Также прошу комментировать неправильную работу поиска, если такая проявится.

Сегодня опять "дошлифовала" твоим скриптом новый файл. И это снова повод сказать - огромное спасибо.
Твой скрипт вошёл в число обязательных.

Присоединяюсь. Прицепил этот скрипт на F4. Теперь это одна из «любимых» клавиш.

Решил попробовать...
Сразу же несколько вопросов:
Скрипт действует только до первого сомнительного места? Чтобы продолжать, его надо снова включать?

Застрял на слове "хозяин". Сочетание "яи" оказалось слишком частым, и меня это стало раздражать.
Почему-то скрипт останавливается на кавычках - «. Они что, тоже записаны в сомнительные символы?
Частица "б" в текстах используется часто. Надо ли ее включать в скрипт?

А вот что еще можно включить, так это однобуквенные предлоги и частицы с последующей запятой, типа: "в," "б," "о,".

Тоже показывает только «, яи и ). Щелкаю минут пять уже и ничего пока другого. :)
Чуть позже:
Находит, кое что, все-таки. Можно пользоваться.:)

Я пользуюсь предыдущей версией. Никаких "яи" и прочего упомянутого не заметила.
Может, дело в этом?

Согласен, остановки на словах типа «хозяин» несколько раздражают, но никто ведь не мешает убрать из скрипта соответствующую строчку.

А вот если бы он еще и обучался по ходу дела, вообще бы цены не было.

В скрипте надо поправить соответствующие строки:

1) чтобы не искало кавычку в начале строки, строку:
addRegExp("^[\]».,:;!\?-·)(\"]","","Найдено:знаки препинания в начале строки");

заменить на:

addRegExp("^[-\\]».,:;!\?·)(]","","Найдено:знаки препинания в начале строки");

2) поправить "хозяина", чтобы не мешал ))
tagRegExp("(яи)[а-м,о-я]","i","Найдено: часть слова \"яи\" (\"ян\" с опечаткой).");

Чтобы не экранировать кавычки (т.е. не ставить рядом с ними слэш), можно снаружи аргумента функции написать одинарные кавычки:

tagRegExp("(?<![а-яё])ке(?![а-яё])","i",'Найдено: слово "ке" ("не" с опечаткой).');

Так исходник скрипта, наверное, будет читаться приятней.

Sclex:
Ага, спасибо!
А как все же задать начало или конец слова при поиске в ФБЕ?
стандартные варианты типа >, <, \b что-то не хотят у меня работать...

\b работает, но только для английских букв. Ничего лучше, чем (?<![а-яёa-z]), предложить не могу.

TaKir написал:
tagRegExp("(яи)[а-м,о-я]","i","Найдено: часть слова \"яи\" (\"ян\" с опечаткой).");
Тогда пролетит мимо слова "окаяиный" :-(

Где можно взять Ваш скрипт? И как его использовать? Извините, я с такими вещами не сталкивался и проверял проверкой правописания.

Еще ФР часто разрывает аббревиатуры типа "ССС Р"

В последнее время книжках в трех с обилием курсива массово встречалось распознавание "рк" вместо "уж"...

Не придумал, как массово контролировать.:(

Отличный скрипт! Сам все собирался написать что-то вроде этого, но...
TaKir-у респектище!!! Человек-гигант!

По скрипту: я себе добавил еще вот это:
tagRegExp("(?<![а-яё])мыс(?![а-яё])","i","Найдено: слово \"мыс\" (\"мы с\" с опечаткой).");
tagRegExp("(?<![а-яё])ноты(?![а-яё])","i","Найдено: слово \"ноты\" (\"но ты\" с опечаткой).");
tagRegExp("(?<![а-яё])нотам(?![а-яё])","i","Найдено: слово \"нотам\" (\"но там\" с опечаткой).");
tagRegExp("(?<![а-яё])ода(?![а-яё])","i","Найдено: слово \"ода\" (\"о да\" с опечаткой).");
tagRegExp("(?<![а-яё])яс(?![а-яё])","i","Найдено: слово \"яс\" (\"я с\" с опечаткой).");
tagRegExp("(?<![а-яё])яв(?![а-яё])","i","Найдено: слово \"яв\" (\"я в\" с опечаткой).");
tagRegExp("(?<![а-яё])атак(?![а-яё])","i","Найдено: слово \"атак\" (\"а так\" с опечаткой).");
tagRegExp("(?<![а-яё])итак(?![а-яё])","i","Найдено: слово \"итак\" (\"и так\" с опечаткой).");

tagRegExp("(?<![а-яё])гак(?![а-яё])","i","Найдено: слово \"гак\" (\"так\" с опечаткой).");
tagRegExp("(?<![а-яё])гут(?![а-яё])","i","Найдено: слово \"гут\" (\"тут\" с опечаткой).");
tagRegExp("(?<![а-яё])тог(?![а-яё])","i","Найдено: слово \"тог\" (\"тот\" с опечаткой).");
tagRegExp("(?<![а-яё])гот(?![а-яё])","i","Найдено: слово \"гот\" (\"тот\" с опечаткой).");
tagRegExp("(?<![а-яё])еше(?![а-яё])","i","Найдено: слово \"еше\" (\"еще\" с опечаткой).");

Обычно прилипшие тире чистятся скриптом "генуборка", но не все варианты (спасибо shokons за подсказку).

Добавка в скрипт "Поиск по набору регэкспов", автор Sclex для тех случаев, которые генуборка не исправляет:

прилипшие тире:
addRegExp("[A-Za-zА-яЁё][—]","","Найдено: прилипшее тире в конце и середине слова");
addRegExp("[—][A-Za-zА-яЁё]","","Найдено: прилипшее тире в начале и середине слова");

Неожиданно.
Грецию -> Грешно
Польши -> Полыни

Странно - это только у меня при OCR окончание сти превращется в трейд марк на конце - вместо "сущности" получаем "сущностм
а что есть за tagRegExp? Это в каком редакторе? Я пользуюсь FBE 2.6

mikebb написал:
Странно - это только у меня при OCR окончание сти превращется в трейд марк на конце - вместо "сущности" получаем "сущностм

Я думаю, что это скорее всего, сущности
У меня тоже бывает, когда некоторые буквы распознаются как будто бы они были в верхнем индексе, хотя на самом деле на скане ничего подобного не было. Возможно, тут виноват перекос скана.(Сканировщик сканировал страницу под углом, который FR не смог распознать). Иногда из-за перекоса текст становится курсивным.

Zadd написал:

У меня тоже бывает, когда некоторые буквы распознаются как будто бы они были в верхнем индексе, хотя на самом деле на скане ничего подобного не было. .

В принципе можно добавить

tagRegExp("[а-яёa-z]< sup>[а-яёa-z]+?< /sup>|< sup>[а-яёa-z]+?< /sup>[а-яёa-z]","i","Найдено: Найдено: верхний индекс в средней части слова.");
tagRegExp("[а-яё]< sup>[а-яё]+?< /sup>|< sup>[а-яё]+?< /sup>[а-яё]","i","Найдено: Найдено: верхний индекс.");
tagRegExp("< sup>[а-яёa-z]+?< /sup>[а-яёa-z]|[а-яёa-z]< sup>[а-яёa-z]+?< /sup>","","Найдено: верхний индекс в начале или конце слова.");

tagRegExp("[а-яёa-z]< sub>[а-яёa-z]+?< /sub>|< sub>[а-яёa-z]+?< /sub>[а-яёa-z]","i","Найдено: нижний индекс в средней части слова.");
tagRegExp("[а-яё]< sub>[а-яё]+?< /sub>|< sub>[а-яё]+?< /sub>[а-яё]","i","Найдено: нижний индекс части слова.");
tagRegExp("< sub>[а-яёa-z]+?< /sub>[а-яёa-z]|[а-яёa-z]< sub>[а-яёa-z]+?< /sub>","","Найдено: нижний индекс в начале или конце слова.");

tagRegExp("[а-яёa-z]< strong>[а-яёa-z]+?< /strong>|< strong>[а-яёa-z]+?< /strong>[а-яёa-z]","i","Найдено: жирность в средней части слова.");
tagRegExp("[а-яё]< strong>[а-яё]+?< /strong>|< strong>[а-яё]+?< /strong>[а-яё]","i","Найдено: жирность части слова.");
tagRegExp("< strong>[а-яёa-z]+?< /strong>[а-яёa-z]|[а-яёa-z]< strong>[а-яёa-z]+?< /strong>","","Найдено: жирность в начале или конце слова.");
tagRegExp("(ыи)","i","Найдено: часть слова \"ыи\" (\"ьш\" с опечаткой).");

--------------------------------
Вот только не знаю - будет ли скрипт тормозить из-за увеличения кол-ва выражений?
Я себе поставил - вроде изменения скорости визуально не заметил, а специально мерить неохота )))

Кстати - по поводу тире.
А где-нибудь нужно, чтобы тире "прилипало" к слову? (текст— текст )
Если нет ( а я так и не вспомнил - где нужно ) то можно регеспом массово: (текст — текст )
([а-яё\d"».,)])([—])(\s)
в замену: $1 — $3

Нет это именн превращение в тм!
оставлености получилось оставленное™
захваченности получилось захваченное™

mikebb написал:
Странно - это только у меня при OCR окончание сти превращется в трейд марк на конце - вместо "сущности" получаем "сущностм

Неоднократно тоже встречал такое в ФР.

А где теперь дополнение? У меня поход по ссылека приводит к
SearchWithRegexpSet_v21.rar (3.2 КБ)
Файл удален.

mikebb написал:
А где теперь дополнение? У меня поход по ссылека приводит к SearchWithRegexpSet_v21.rar (3.2 КБ)
Файл удален.

http://groups.google.com/group/fiction-book-editor/browse_thread/thread/b4700ee54d255384/e200b7b6f319c4c8
Актуальная на сегодня версия - 2.7.
Скрипт "Поиск по набору регэкспов v2.7":
Скачать:
http://rghost.ru/3955874
или
http://scripts.fictionbook.org/files/SearchWithRegexpSet_v27.rar

Напоминаю, что исходный скрипт не содержит поисковых строк. Их надо скопировать из старой версии, которой вы сейчас пользуетесь и закомментарить следующую строку:
addRegExp("","i","Задайте список регэкспов, отредактировав скрипт в текстовом редакторе (кодировка UTF-8). Инструкция – в скрипте.");

Ускорена работа скрипта.
Теперь у функций addRegExp и tagRegExp появился пятый параметр:
ограничение на длину строки, которую могут находить конструкции просмотра назад, т.е. (?<= ...) и (?

Сорри, почему-то не отражаются теги. Поставлю пробел после угловой скобки

shokons написал:
почему-то не отражаются теги
Вместо "<" пиши "&lt;".

Кто-нибудь, выложите пожалуйста скрипт со всеми поисковыми строками, и закомменченый, где нужно... У меня с этим проблемы.

Это мой вариант ( со всеми здешними дополнениями) http://ifolder.ru/upload/?session=e304e600145a5b151f77b967e9ab7b2a

Страницы

X