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

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

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

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

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

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

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

Комментарии

golma1 написал:

Твой скрипт действительно находит в указанном месте, а в следующем уже нет. :(
"вид но"
Как такое может быть?

странно.. у меня ОК

УПД: ЕСЛИ У ТЕБЯ ТАМ НЕРАЗРЫВНЫЙ ПРОБЕЛ, то тогда понятно, да

У меня вообще находит один раз из трёх "но", которые я поставила в строку. Не понимаю. :((((

Нет, какой же неразрывный, я от руки написала строку.

Ладно, отложим. Не получается. :(((
Доделаю книгу, буду дальше пробовать. Спасибо сирамно. :)

golma1 написал:

Ладно, отложим. Не получается. :(((
Доделаю книгу, буду дальше пробовать. Спасибо сирамно. :)

Вот такую строчку отлично проверил

У меня теперь тоже. Кстати, скрипт Алдио с запятой тоже всё у меня нашёл.

Но "точка, тире, буква" более комплексный. Там можно не только знак препинания менять, но и регистр буквы. И у него обзор лучше.
Скрипт Алдио хорош для второго прогона и, как я уже писала, для нахождения пропущенной точки. Это важно.

Коллеги, я получаю огромное удовольствие от того, как совместными усилиями мы улучшаем качество наших книг. Для меня огромная честь и радость общаться со всеми вами!

А если добавить:
", по" - найдем все не правильно распознанные ", но"...

TaKir Такой вопрос - может имеет смысл перенести "ыи" поиск сочетания только в конце слова?

JonVic написал:
Такой вопрос - может имеет смысл перенести "ыи" поиск сочетания только в конце слова?
"ыи" - это довольно частая ошибка при распознавании "ьш".

Иногда встречается "ыо" вместо "ью".

Это, по-моему, есть в первоначальном варианте...

Пробовал ставить поиск "фа"->"гра" - хватило меня на 2 минуты - слишком много ошибочных нахождений...

JonVic написал:
Пробовал ставить поиск "фа"->"гра" - хватило меня на 2 минуты - слишком много ошибочных нахождений...
Я заметил, что про распознавании "гр" на "ф" меняется буквально в считанных словах: гроб - фоб, негр - неф и граната - фаната. Это какой-то глюк в словарях Файнридера (версии 8, 9 и 10), такой же как и с Таймс - Тайме или Юнкерс - Юнкере.

justserge написал:
JonVic написал:
Пробовал ставить поиск "фа"->"гра" - хватило меня на 2 минуты - слишком много ошибочных нахождений...
Я заметил, что про распознавании "гр" на "ф" меняется буквально в считанных словах: гроб - фоб, негр - неф и граната - фаната. Это какой-то глюк в словарях Файнридера (версии 8, 9 и 10), такой же как и с Таймс - Тайме или Юнкерс - Юнкере.

Подтверждаю. И ещё фуппа - группа и Уильяме - Уильямс.

Из этой же серии встретилась фация - грация.

Цитата:
Пробовал ставить поиск "фа"->"гра"

если книжка про войнушку, можно прогнать поиском по слову фанат, и посмотреть что найдется... давно так делаю

Фраза "open the window" была распознана как "орёл не видел"

Kulipanov написал:
Фраза "open the window" была распознана как "орёл не видел"

Лучше было язык распознавания задать английский, тогда не стал бы по-русски распознавать.
FR тем и хорош, что можно любую область распознать отдельно от других и каждой области распознавания задать свой язык - очень помогает при распознавании многоязычных текстов, особенно там, где не только русско-английский, но и другие языки присутствуют.

Точка в середине предложения (мусор, неправильная запятая).

J_Blood написал:
Точка в середине предложения (мусор, неправильная запятая).

... ловится скриптом "Слипшиеся слова".

golma1 написал:
J_Blood написал:
Точка в середине предложения (мусор, неправильная запятая).

... ловится скриптом "Слипшиеся слова".

Попробовал. Чевой-то неудобным он мне показался. Два слова только показывает, надо все равно по тексту проверять, вариант замены вручную править. Запихнуть бы это дело в Единый Великий Скрипт :))

J_Blood написал:
golma1 написал:
J_Blood написал:
Точка в середине предложения (мусор, неправильная запятая).

... ловится скриптом "Слипшиеся слова".

Попробовал. Чевой-то неудобным он мне показался. Два слова только показывает, надо все равно по тексту проверять, вариант замены вручную править. Запихнуть бы это дело в Единый Великий Скрипт :))

Насколько я понимаю, не все знают КАК добавить в Единый скрипт тот или иной регесп.
Попробую описать максимально просто:
1. Скачиваем или открываем скрипт.Я поместил его в папку чистка: FictionBook Editor - Scripts - 06_Чистка
2. Открываем его при помощи блокнота: Рекомендую Notepad++. В нём нерабочие строки будут выделяться зелёным цветом:

3. Читаем комментарий. (комментарий кончается словами : -------------начало блока TaKir - регэкспы:--------------- )
Если категорически непонятно - пропускаем.:

4. Вставляем нужный или скопированный регесп из этой темы. Для удобства выделите его пустыми строками ( они в данном случае никакой роли не играют):

5. Жмём на "Сохранить"
6. Пробуем

Ещё немного:
Для удобства можно вывести ярлык этого скрипты на рабочий стол и редактировать его по мере необходимости. Скрипт начинает работать сразу по сохранению. Перезапускать FBE не требуется
Ненужный регэсп можно отключить, поставив в начале строки два слеша (//). В Notepad++ эта строчка изменит цвет на зелёный. Сохраняем.

J_Blood написал:
golma1 написал:
J_Blood написал:
Точка в середине предложения (мусор, неправильная запятая).

... ловится скриптом "Слипшиеся слова".

Попробовал. Чевой-то неудобным он мне показался. Два слова только показывает, надо все равно по тексту проверять, вариант замены вручную править. Запихнуть бы это дело в Единый Великий Скрипт :))

Дело в том, что этот скрипт ловит намного больше, чем точку в середине предложения. У меня он - в списке обязательных скриптов. Ну и заодно и точку ловит. ;)

Ага. У меня просто скан попался такой, вот этих самых точек много. Показалось проще вылавливать поиском [а-я][.] [а-я], учит. регистр, рег. выражения. А так многие скрипты пользую.
Да, и wotti спасибо за это:

Цитата:
Ненужный регэсп можно отключить, поставив в начале строки два слеша (//).

Не знал.
А, еще вспомнил по случаю - вот этого скриптика у Вас не завалялось случаем? А то потерялся у меня, теперь вспоминаю с тоской:))

J_Blood написал:

А, еще вспомнил по случаю - вот этого скриптика у Вас не завалялось случаем? А то потерялся у меня, теперь вспоминаю с тоской:))

http://www.multiupload.com/RWM7NPFQ5R

wotti написал:
J_Blood написал:

А, еще вспомнил по случаю - вот этого скриптика у Вас не завалялось случаем? А то потерялся у меня, теперь вспоминаю с тоской:))

http://www.multiupload.com/RWM7NPFQ5R

Благодарствую:))

Туда же можно засунуть конструкцию "[а-я] — [А-Я]" с учётом регистра (т.е. "i" убрать). Отлавливает места, где в диалогах пропала точка.

Ну и до кучи ", — [А-Я]" с учётом регистра (т.е. "i" убрать). Отлавливает места, где в диалогах запятая вместо точки.

addRegExp("[а-я] — [А-Я]","","Найдено: возможно, пропущена точка в диалоге"); addRegExp(", — [А-Я]","","Найдено: возможно, запятая вместо точки в диалоге"); addRegExp("[а-я] но ","i","Найдено: -но- после слова и в обрамлении пробелов, скорее всего нужно -по-");

Aldio написал:
addRegExp("[а-я] — [А-Я]","","Найдено: возможно, пропущена точка в диалоге");
addRegExp(", — [А-Я]","","Найдено: возможно, запятая вместо точки в диалоге");
addRegExp("[а-я] но ","i","Найдено: -но- после слова и в обрамлении пробелов, скорее всего нужно -по-");

Yeeeeessss!
Спасибо, Алдио!

Wotti, и тебе.

с запятой почему-то не работает. Завтра посмотрю :-)

Aldio написал:
с запятой почему-то не работает. Завтра посмотрю :-)

Запятую отлично ищет тот скрипт, о котором я писала - "точка тире буква", а вот пропущенную точку только что нашла с твоим скриптом. Кла-а-а-а-ассс!!!

Aldio написал:
с запятой почему-то не работает. Завтра посмотрю :-)

addRegExp("[,] [—] [А-ЯЁ]","","Проверка знака припинания");

Странно... не работает с запятой. Чудеса. Ладно, утро вечера мудренее :-)
А, не. Понял.
После "Генеральной уборки" пробел после запятой и перед тире похоже превращается в неразрывный. И соответственно более не находится. Как в скрипте указать неразрывный пробел?

Про точка-три-буква понял,. Раньше не пользовался. Буду :-)

Aldio написал:
Странно... не работает с запятой. Чудеса. Ладно, утро вечера мудренее :-)
А, не. Понял.
После "Генеральной уборки" пробел после запятой и перед тире похоже превращается в неразрывный. И соответственно более не находится. Как в скрипте указать неразрывный пробел?

Включи режим отображения неразрывных пробелов в настройках
Скопируй в сорцах неразрывный пробел
Вставь в скрипт
У меня так:
addRegExp(",□— [А-Я]","","Найдено: возможно, запятая вместо точки в диалоге");

УПД.
Некоторые регэспы лучше делать в 2-х видах: с простым и с неразрывными пробелами, чтобы ловил оба варианта

wotti написал:

У меня так:
addRegExp(",□— [А-Я]","","Найдено: возможно, запятая вместо точки в диалоге");
УПД.
Некоторые регэспы лучше делать в 2-х видах: с простым и с неразрывными пробелами, чтобы ловил оба варианта

Co-o-o-o-ol! Тоже работает.

Вот переделаю все-все-все книги и засяду тренироваться писать регэкспы. Да.

Если у вас последняя версия скрипта, то неразрывный пробел в регэкспе можно записать так: \xA0 , тогда он будет корректно искаться независимо от того, какое его отображение выбрано в настройках.

Sclex написал:
Если у вас последняя версия скрипта, то неразрывный пробел в регэкспе можно записать так: \xA0 , тогда он будет корректно искаться независимо от того, какое его отображение выбрано в настройках.

О, спасибо! Теперь и после "Ген. уборки" работает. :)

Цитата:
Вот переделаю все-все-все книги и засяду тренироваться писать регэкспы. Да.

Тоскливо перечитал фразу и подумал, сколько ещё можно умного узнать, если бы.. но... Ну и фигсним )))

wotti Спасибо! :-)

Тема открыта уже полгода...
Сам пользуюсь двумя - "Поиск по набору регэкспов TaKir 24_01_2011" и "своим", подсмотренным здесь:
[collapsed title=открыть]addRegExp("[а-яё][А-ЯЁ]","","Найдено: смесь регистров");
addRegExp("[А-ЯЁ][А-ЯЁ][а-яё]","","Найдено: смесь регистров");

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

tagRegExp("(фан)","i","Найдено: часть слова "фан" ("гран" с опечаткой).","",1);

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("[а-яё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>","","Найдено: нижний индекс в начале или конце слова.");[/collapsed]

Так вот... - есть у кого готовые и работающие наработки?
А так же, желание поделиться? :)

Выложите кто-нибудь готовый скрипт со всеми наработками, please.

Roxana написал:
Мой http://ifolder.ru/24492734

И от меня спасибо.

Wotti тоже собирался делать, хотела как раз его просить включить ещё два "моих" слова ко всем уже перенятым:
"Уильяме" вместо "Уильямс"
и
"поддерев" вместо "под дерев" (склеиваются почему-то только "под деревом" или "под деревьями"; причём "поддеревом" даже не распознаётся как орфографическая ошибка - ни в ФР, ни в ФБЕ).

Может, кому-нибудь тоже пригодится.

Сейчас делаю книжку и постоянно натыкаюсь: "Ухты" вместо "Ух ты", "Ивам" вместо "И вам", "1" в конце предложения вместо "!"

Алексей_Н написал:
Сейчас делаю книжку и постоянно натыкаюсь: "Ухты" вместо "Ух ты", "Ивам" вместо "И вам", "1" в конце предложения вместо "!"

Ну, "1" выловит как "смесь букв и цифр", а остальные, если регулярно встречаются, можно добавить (по аналогии с уже существующими), а потом отключить. Я часто так делаю для конкретной книги.

Типичные ошибки для данной книги можно найти и обычным поиском. Но сочетания "И вам" и "Ух ты" не так часты и в любой другой книги могут оказаться незамеченными.

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

Ну так включите эти случаи в свой вариант скрипта. ;)

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

Коллеги!
Этот скрипт - огромная помощь для верстальщиков. Трудно переоценить его необходимость. Но он не заменяет все остальные скрипты.
Не ограничивайтесь только им, какое бы количество регэкспов мы туда ни запихнули.
Более того, если вы использовали другие скрипты до запуска этого, то они уже нашли множество ошибок, а значит скрипт по регэкспам будет работать намного быстрее.

Ещё (может кто не знает)

Чтобы присвоить скрипту (любому) горячую клавишу нужно:
1. Заходим в меню Сервис-Настройки

2. в появившемся окне выбираем вкладку "Клавиши". В левом окошке выбираем "Скрипты". В правом ищем скрипт "Поиск по набору регеспов" . В чекбоксе "Клавиши" выбираем ту, что больше нравится. (В моём случае это F4) Жмём "Присвоить"

ВСЁ

Можно вывести иконку на панель скриптов. Для этого:
1. Клик на панели скриптов. Появится окошко "Настроить"

2. В появившемся окошке настройки, выбираем нужную иконку и переносим её в правую часть, нажав кнопку "Добавить"

Голма совершенно права. Я тоже сначала прохожу скриптами, которые заточены под определённые операции и только потом прохожу Единым скриптом и Спеллчеком.

Страницы

X