Утилита для извлечения текста из файлов (blb2txt.exe)

Программа "Балаболка" предназначена для воспроизведения звуков человеческого голоса с использованием любого речевого синтезатора, установленного на компьютере.

Модератор: balabolka

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#51

Сообщение balabolka »

Версия 1.82
  • Добавлена возможность использования переменной %FileName% в шаблоне для имени файла. При извлечении текста и сохранении на диске переменная будет заменяться именем входного текстового файла в имени нового файла.
  • Добавлено распознавание формата входного документа для файлов с неизвестными расширениями.
Если имя входного файла имеет расширение, неизвестное утилите (например, INPUT.ZZZ), будут выполнены следующие шаги:
  • программа попытается распознать формат входного файла по его содержимому;
  • программа постарается найти подходящий IFilter, установленный в операционной системе;
  • если предыдущие попытки не удались, входной документ будет обработан как обычный текстовый файл.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#52

Сообщение balabolka »

Версия 1.83
  • Добавлены параметры для вставки дополнительного текста в сноски и примечания при извлечении данных из файлов форматов DOCX, FB2, FB3 и ODT.
  • Добавлен параметр для указания формата входного файла. (Это может быть полезно для тех случаев, когда имя файла имеет неизвестное расширение или когда данные поступают из стандартного потока ввода.)

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#53

Сообщение balabolka »

Версия 1.84
  • Улучшено распознавание типов данных для формата EML.
  • Обновлено извлечение текста из файлов форматов FB2 и FB3.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#54

Сообщение balabolka »

Версия 1.85
  • Добавлено извлечение текста для файлов в формате Markdown (разметка Markdown будет удалена из документа, останется только текст).

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#55

Сообщение balabolka »

Версия 1.86
  • Исправлено извлечение текста для файлов в формате Markdown.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#56

Сообщение balabolka »

Версия 1.87
  • Небольшие улучшения.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#57

Сообщение balabolka »

Версия 1.88
  • Исправлено извлечение текста из файлов формата EPUB.
  • Исправлено применение регулярных выражений к текстам на немецком языке.

Аватара пользователя
Lecron
Специалист

Утилита для извлечения текста из файлов (blb2txt.exe)

#58

Сообщение Lecron »

balabolka писал(а):Добавлена настройка "Искать римские числа" в окно "Заменить числа словами".
Планируете ли добавить в blb2txt?
Как реализовано распознание одиночных символов, особенно "I" и "X"? Много ли ложных срабатываний?

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#59

Сообщение balabolka »

Lecron писал(а):
30 мар 2020 15:21
Планируете ли добавить в blb2txt?
Нет, так как замена чисел словами в "Балаболке" выполняется в интерактивном режиме. Для автоматической замены надо использовать словари.
Lecron писал(а):
30 мар 2020 15:21
Как реализовано распознание одиночных символов, особенно "I" и "X"?
Никак не реализовано: "Балаболка", встретив такой символ в тексте, предложит заменить его словом. Решение принимает человек.

Аватара пользователя
Lecron
Специалист

Утилита для извлечения текста из файлов (blb2txt.exe)

#60

Сообщение Lecron »

Не знаю, ошибка это fb2-файла или программы, но если заголовок файла содержит

Код: Выделить всё

<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.1" 
текст не извлекается. Замена 2.1 на 2.0 все исправляет.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#61

Сообщение balabolka »

Lecron писал(а):
15 апр 2020 11:03
Замена 2.1 на 2.0 все исправляет.
Спасибо за информацию, учту это в следующей версии программы.

Подскажите, где Вы нашли такие книги FB2 (или в каком редакторе они были созданы).

Аватара пользователя
Lecron
Специалист

Утилита для извлечения текста из файлов (blb2txt.exe)

#62

Сообщение Lecron »

balabolka писал(а):
15 апр 2020 16:36
Подскажите, где Вы нашли такие книги FB2 (или в каком редакторе они были созданы).
Вряд ли поможет. КУРЧЕНКО ВЛАДЛЕНА - Королева ордена, но скачана не самиздата, а с флибусты. Дата создания — 2014 год. Может софт уже починили.
Встречаю ошибку извлечения нечасто, но бывает. Обычно достаточно почистить заголовок от "лишних" полей. Даже не углублялся в детали, что могло конфликтовать. А сейчас не прокатило.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#63

Сообщение balabolka »

Lecron
Спасибо за ссылку. Скачал эту книгу, буду разбираться.

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

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#64

Сообщение balabolka »

Версия 1.89
  • Исправлено извлечение текста из файлов формата FB2.

Аватара пользователя
Lecron
Специалист

Утилита для извлечения текста из файлов (blb2txt.exe)

#65

Сообщение Lecron »

Спасибо за исправление. Прогнал ~1500 книг своего архива, ни одного сбоя.

Несколько предложений на перспективу развития.
1.Убрать отдельные ключи для работы stdin/out, используя стандартное обозначение знаком дефиса "-f -" и "-out -". А еще более привычно "-i" и "-o" :-), а файл там или пайп, дело десятое.
2.Следуя принципу единичной ответственности, разбить утилиту на две. Для преобразования текста, собственно blb2txt, и для работы с фрагментами, возможно blb2split. Будет легче парсить и комбинировать параметры, а пользователям легче разбираться.
3.Если это выходит за рамки, хотя бы выделите ключи разбиения в отдельный визуальный блок в help-е, похожий с блоком remove, csv, eml

PS. Будет повод сбросить большое число минорной версии и перейти к 2.0 :-)

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#66

Сообщение balabolka »

Lecron
Обещаю подумать над Вашими предложениями, но сразу могу сказать, что не стану делить утилиту на две отдельные программы. Это даже не обсуждается.

speeck
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#67

Сообщение speeck »

Спасибо за программу, очень удобно работать!
Небольшие пожелания, может быть вы решите их добавить:
1. Сделать возможно указания порядка Автор-Название. Сейчас идет название книги, ниже автор, хотелось бы также иметь возможность, чтобы сначала следовало имя автора, затем название книги. На мой взгляд так даже логичнее.
2. Сделать возможность указания шаблона вставки примечаний. Сейчас, если сделать автоматическую вставку примечаний, их затем приходится вручную править (я предпочитаю слышать когда начинается примечание и когда заканчивается, так удобнее слушать книги).
Приходится искать все [ и ], исправлять их на "Начало примечания", "Конец примечания". Само по себе это не сложно, сложности появляются, когда в книгах кроме примечаний в [] идут просто вставки текста, которые не нужно исправлять. Вот здесь можно засесть на долго, корректируя вручную.
Также в примечаниях, на мой взгляд, не нужны цифры, какой в них смысл? Мы же не ищем их в конце книги. Достаточно было бы обозначения "Начало примечания", "Конец примечания" (крайне желательно с правкой шаблона, т.к. в разных синтезах их идеально указывать по разному).
Надеюсь услышите голос вопиющего. Всех благ.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#68

Сообщение balabolka »

speeck писал(а):
06 май 2020 11:58
Сделать возможно указания порядка Автор-Название.
Как я понял, речь идет о книгах формата FB2, об извлечении аннотации из файла.

Идея Ваша понятна. Да, сейчас жёстко задан набор полей и их порядок при извлечении из FB2-файла: сначала название, затем автор и описание книги. Почему первым идет название книги, полагаю, очевидно: мои программы умеют давать названия новым файлам (текстовым и звуковым), используя первую строку текста; так как у одного автора может быть несколько произведений, то лучше включать в имя нового файла название книги, а не имя ее автора.

Сейчас мне бы не хотелось добавлять в свою утилиту новые параметры для настройки способа извлечения аннотаций из файлов FB2 и FB3. В этих аннотациях много разных полей: пришлось бы перечислять их где-то в документации, придумывать какие-то обозначения, придумывать способ форматирования извлеченных аннотаций. Например, напомню, что в аннотации файла формата FB2 имя, отчество и фамилия автора - это три разных поля, так что информацию об авторе можно записать и как "Лев Толстой", и как "Лев Николаевич Толстой", и как "Толстой, Лев Николаевич". (Кстати, авторов может быть несколько или не быть совсем.)

Информация из аннотации файла FB2 не кажется мне настолько важной, что ради нее надо усложнять программу. Утилита и так имеет много параметров.

Обещаю еще подумать над этим.
speeck писал(а):
06 май 2020 11:58
Сделать возможность указания шаблона вставки примечаний.
А это как раз подтверждение того, о чем писал выше: в программе так много настроек, что пользователи иногда повторно просят реализовать то, что уже есть в параметрах.
--insert-note-begin текст или -inb текст
Вставить слова в начало сносок и примечаний внутри текста (например: Примечание редактора.). Параметр используется при извлечении текста из файлов форматов DOCX/FB2/FB3/ODT.

--insert-note-end текст или -ine текст
Вставить слова в конец сносок и примечаний внутри текста (например: Конец примечания.). Параметр используется при извлечении текста из файлов форматов DOCX/FB2/FB3/ODT.
Насчет чисел внутри примечаний: это сложный вопрос. Кому-то они не нужны, так как рядом с числом есть полный текст примечания. Кто-то, наоборот, требует, чтобы извлеченный текст был похож на исходный текст в электронный книге, с номерами примечаний. Большинству пользователей всё равно. Сейчас я не готов добавить какой-либо специальный параметр для всего этого.

Если задан текст для вставки в начало примечания, то номер примечания не извлекается.

speeck
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#69

Сообщение speeck »

balabolka писал(а):
06 май 2020 14:03
Сейчас мне бы не хотелось добавлять в свою утилиту новые параметры для настройки способа извлечения аннотаций из файлов FB2 и FB3
Спасибо, понял, в целом согласен с Вами, нагромождение настроек только усложняет систему, а не делает её удобной
balabolka писал(а):
06 май 2020 14:03
в программе так много настроек, что пользователи иногда повторно просят реализовать то, что уже есть в параметрах
Вот те раз! Вероятно я работал со старой версией программы, т.к. не помню таких настроек. Спасибо!

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#70

Сообщение balabolka »

Версия 1.90
  • Для извлечения текста из старых документов, созданных в Microsoft Word 6.0/95, используется текстовый редактор LibreOffice Writer (если офисный пакет LibreOffice установлен на компьютере).

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#71

Сообщение balabolka »

Версия 1.91
  • Обновлено извлечение текста из файлов формата EPUB.

speeck
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#72

Сообщение speeck »

balabolka писал(а):
06 май 2020 14:03
--insert-note-begin текст или -inb текст
Вставить слова в начало сносок и примечаний внутри текста (например: Примечание редактора.). Параметр используется при извлечении текста из файлов форматов DOCX/FB2/FB3/ODT.
--insert-note-end текст или -ine текст
Вставить слова в конец сносок и примечаний внутри текста (например: Конец примечания.). Параметр используется при извлечении текста из файлов форматов DOCX/FB2/FB3/ODT.
Здравствуйте! Почему-то кракозябры вместо кириллицы. Вот например как прописалось "Конец примечания":
.╨Ъ╨╛╨╜╨╡╤Ж ╨┐╤А╨╕╨╝╨╡╤З╨░╨╜╨╕╤П.
Программу запускаю через cmd-файл, кодировку в самом файле менял на Utf8 и Ansi.
Полный вызов выглядит так:
blb2txt -f "d:\Audbooks\*.fb2" -v "d:\Audbooks\" -b -e utf8 -ap -sn -in 1 -inb "Примечание: " -ine ".Конец примечания."

speeck
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#73

Сообщение speeck »

speeck писал(а):
25 май 2020 18:04
Почему-то кракозябры вместо кириллицы. Вот например как прописалось "Конец примечания":
.╨Ъ╨╛╨╜╨╡╤Ж ╨┐╤А╨╕╨╝╨╡╤З╨░╨╜╨╕╤П.
Программу запускаю через cmd-файл
Вместо cmd сделал простой ярлык, и добавил все параметры туда, теперь все в норме.
В целом вопрос закрыт, но можно иметь в виду, что через командную строку может не корректно передавать кириллицу, либо нужны доп. ковыряния, что наверное и не нужно.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#74

Сообщение balabolka »

speeck писал(а):
25 май 2020 18:04
Почему-то кракозябры вместо кириллицы.
Это не имеет отношения к моей программе. Ищите в интернете, как решить проблему с передачей кириллицы в командной строке. Например:
Как добиться правильной работы пакетных файлов (*.bat, *.cmd), содержащих кириллические пути?

Насколько я помню, можно добавить в начало BAT-файла команду CHCP для изменения текущей кодовой страницы:

Код: Выделить всё

@echo off
chcp 1251
balabolka -rn "Это русский текст"
Это поможет.

speeck
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#75

Сообщение speeck »

balabolka писал(а):
06 май 2020 14:03
Почему первым идет название книги, полагаю, очевидно: мои программы умеют давать названия новым файлам (текстовым и звуковым), используя первую строку текста; так как у одного автора может быть несколько произведений, то лучше включать в имя нового файла название книги, а не имя ее автора.

Сейчас мне бы не хотелось добавлять в свою утилиту новые параметры для настройки способа извлечения аннотаций из файлов FB2 и FB3. В этих аннотациях много разных полей: пришлось бы перечислять их где-то в документации, придумывать какие-то обозначения, придумывать способ форматирования извлеченных аннотаций. Например, напомню, что в аннотации файла формата FB2 имя, отчество и фамилия автора - это три разных поля, так что информацию об авторе можно записать и как "Лев Толстой", и как "Лев Николаевич Толстой", и как "Толстой, Лев Николаевич". (Кстати, авторов может быть несколько или не быть совсем.)
Здравствуйте. Насчет возможности настройки отображения имени автора. Все же было бы удобно иметь таковую, по меньшей мере для книг формата FB2. Связано это, в том числе, с тем, что имя автора часто дублируется в начале файла, в полях first-name / last-name, а затем уже непосредственно в тексте, перед самым началом:
<body>
<title>
<p>Стивен Кинг</p>.
Я посмотрел справку по Вашей программе, есть предложение сделать настройку, подобно настройки аннотаций, параметр:
--include-notes <число> или -in <число>.
Как вариант решения:

Код: Выделить всё

--include-author-name <число> или -ia <число>
   Добавить имя автора из файлов форматов FB2 (/FB3?). Возможные значения для числового параметра:
   0 - не добавлять
   1 - сначала идет имя, затем фамилия (first-name / last-name)
   2 - сначала идет фамилия, затем имя (last-name / first-name)
Лично я почти в каждой книге удаляю лишнюю пару ФИО, а кроме этого еще переставляю местами Имя и Фамилию. Впрочем, сейчас хочу написать для этого простой скрипт, но решил посоветоваться с Вами, возможно получится реализовать это в рамках самой утилиты.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#76

Сообщение balabolka »

speeck
Может быть, Вам стоит просто игнорировать аннотацию в книге FB2/FB3 (параметр --skip-summary)? Будет извлекаться только содержимое книги.

В "Балаболке" аннотация для книг извлекается по умолчанию только потому, что так же поступал и скрипт для извлечения текста, написанный разработчиком формата FB2 Дмитрием Грибовым. Его скрипт вставлял из аннотации в начало текста ФИО автора (имя, отчество, фамилия), название книги и ее описание (а если книга входит в состав цикла книг, то еще и название цикла). Я просто сделал также, для единообразия.

Предложенный Вами параметр добавить несложно, но так ли уж он нужен? Об этом я и писал в своем предыдущем сообщении: можно добавить много параметров для настройки показа текста, извлеченного из аннотации, но это не то, чем бы мне хотелось заниматься. Если пользователя не устраивает, как программа показывает аннотацию по умолчанию, можно просто не извлекать аннотацию вообще. Иначе можно настраивать ее показ до бесконечности (в спецификации для аннотации два десятка полей).

Кстати, а почему Вам так важно настроить показ ФИО? Я описал ситуацию с ФИО для примера, но мне лично способ записи имена автора не важен. Я бы не стал добавлять отдельный специальный параметр для своих нужд. (К тому же, надо дополнительно объяснять в документации, что параметр игнорирования аннотации и параметр настройки показа имени автора связаны между собой.)

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

speeck
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#77

Сообщение speeck »

balabolka писал(а):
27 май 2020 02:25
В "Балаболке" аннотация для книг извлекается по умолчанию только потому, что так же поступал и скрипт для извлечения текста, написанный разработчиком формата FB2 Дмитрием Грибовым. Его скрипт вставлял из аннотации в начало текста ФИО автора (имя, отчество, фамилия), название книги и ее описание (а если книга входит в состав цикла книг, то еще и название цикла). Я просто сделал также, для единообразия.
Не знал про эту особенность, да, нужно проверить, сегодня займусь этим. Хотя аннотации (именно аннотации, без сопутствующего) иногда вполне годные и их неплохо было бы оставить.
balabolka писал(а):
27 май 2020 02:25
Кстати, а почему Вам так важно настроить показ ФИО?
Не знаю даже как сказать, в целом наверное не так важно, но оно сейчас есть, и я хотел это поднастроить. Еще раз повторюсь - для меня не составляет трудности состряпать для этого простейший скрипт, но если это можно было бы сделать в рамках единой программы, которая уже покрывает 98% потребностей, так было бы просто удобнее.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#78

Сообщение balabolka »

speeck
Попробую добавить такой параметр (вместо --skip-summary).

Код: Выделить всё

--extract-summary <число> или -es <число>
  Извлечь аннотацию из файлов форматов FB2/FB3 и вставить в начало текста.
  Возможные значения для числового параметра:
  0 - не извлекать аннотацию
  1..4 - различные варианты форматирования текста аннотации
Варианты будут определять способы размещения имени автора и названия книги друг относительно друга.

1-ый вариант:

Код: Выделить всё

Горе от ума
Александр Грибоедов
2-ой вариант:

Код: Выделить всё

Александр Грибоедов
Горе от ума
3-ий вариант:

Код: Выделить всё

Александр Грибоедов. Горе от ума
4-ый вариант:

Код: Выделить всё

Горе от ума
Описание книги будет извлекаться для всех вариантов, от 1 до 4.

Аватара пользователя
Lecron
Специалист

Утилита для извлечения текста из файлов (blb2txt.exe)

#79

Сообщение Lecron »

balabolka писал(а):
27 май 2020 11:44
--extract-summary <число> или -es <число>
Цифровое кодирование не дружелюбно. Предлагаю так

Код: Выделить всё

--extract-summary [default|empty|template]
Где
default - нынешнее поведение (по умолчанию)
empty - не извлекать данные
template, шаблонная строка в стиле %first-name% - %last-name%
Параметр повторяемый. Повторение означает следующую строку в txt файле. Например %annotation%. Или предусмотреть разделитель строк в задании шаблона.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#80

Сообщение balabolka »

Lecron
Я же и писал как раз о том, что не хочу реализовывать никаких сложных шаблонов для такой мелкой опции. Оно того не стоит: только добавит проблем и пользователям, и мне.

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

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#81

Сообщение balabolka »

Версия 1.92
  • Параметр --skip-summary преобразован в --extract-summary.
  • По умолчанию извлечение аннотации из файлов форматов FB2 и FB3 отключено.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#82

Сообщение balabolka »

Версия 1.93
  • Исправлено извлечение аннотации из файлов форматов FB2 и FB3.

Аватара пользователя
Lecron
Специалист

Утилита для извлечения текста из файлов (blb2txt.exe)

#83

Сообщение Lecron »

Решаю проблему с нужным мне символом ударения. Для чего применяю к самому файлу словаря, словарь accent_default.dic с правилом *<*=`
При любых вызовах

Код: Выделить всё

blb2txt.exe -f dictionaries\_default.dic -d dictionaries\accent_default.dic -v test -e utf8
blb2txt.exe -f dictionaries\_default.dic -d dictionaries\accent_default.dic -o -e utf8 > result.dic
В вывод сыплется мусор

В приницпе подпереть костылем нетрудно. Предварительно переименовать в _default.txt, обработать, а потом вернуть. Но уведомить вас все равно решил.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#84

Сообщение balabolka »

Код: Выделить всё

blb2txt.exe -x txt -f dictionaries\_default.dic -d dictionaries\accent_default.dic -v test -e utf8

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#85

Сообщение balabolka »

Версия 1.94
  • Исправлено автоматическое распознавание формата входного документа.

Аватара пользователя
merman
Прохожий

Утилита для извлечения текста из файлов (blb2txt.exe)

#86

Сообщение merman »

Словари от tonio.k
В демагоге 8 минут....
в Балаболке 8 часов....
Мелкие улутшения до каких пор?

Аватара пользователя
tonio_k
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#87

Сообщение tonio_k »

merman писал(а):
15 ноя 2020 20:33
Словари от tonio.k
В демагоге 8 минут....
Словари от tonio.k в штатном режиме и в Демагоге и в Балаболке по скорости работают примерно одинаково (час). Указанные вами "8 минут...." достигается за счет того, что в Демагоге словари применяются через отдельно написанные пользовательские скрипты lua. К каждому словарю через скрипты применяется индивидуальный алгоритм в зависимости от назначения словаря. Большой словарь rex заранее составлен (отредактирован) по специальной схеме с пометками индекс-слов по которым скриптом ищутся и применяются правила по найденным в тексте словам (получается уменьшенный в разы rex словарь состоящий из правил только к тем словам, которые есть в указанном отрезке текста и в самом словаре), а не применяются все правила скопом ко всему тексту.
Правила со звёздочками перенесены в отдельные словари dic а простые правила в другие словари dic и применяется либо прямой перебор (к словарям со звездочками в правилах) либо быстрый алгоритм(к словарям без звездочек с простыми правилами). Скрипт автоматом выбирает алгоритм исходя из названия словаря. Попробуйте из названий в словарях убрать кодовые слова в скобках(index,chisla и т.д.), а в словарях dic убрать "@" - и вот уже скорость не отличается от Балаболки.
merman писал(а):
15 ноя 2020 20:33
в Балаболке 8 часов....
:surprise2: не может быть такого. В Демагоге скорость применения словарей через скрипт максимум в 4 раза быстрее чем те же словари будут применены в штатном режиме. Значит в Балаболке будет примерно так же, а может чуть быстрее.

Аватара пользователя
Lecron
Специалист

Утилита для извлечения текста из файлов (blb2txt.exe)

#88

Сообщение Lecron »

Главный вопрос — почему внешний скрипт, а не штатный алгоритм? Включая выбор алгоритма применения.
Вся предразметка просто не нужна. Индекс-слова в rex вполне можно извлекать при разборе словаря и пред-фильтровать правила перед применением к строке. dic с однословными правилами со звездочками, алгоритмически тоже прекрасно работает в индексном режиме. Что также означает, что индексные слова из rex тоже могут быть со звездочками.
tonio_k писал(а):
16 ноя 2020 19:48
В Демагоге скорость применения словарей через скрипт максимум в 4 раза быстрее чем те же словари будут применены в штатном режиме.
Разница скоростей не должна быть постоянной. Зависит от объема. Для 100 правил возможно будет быстрее прямой перебор, при росте объема, индекс будет все более и более эффективным, и для 100000 правил достигнет 2 порядков. Если у вас меньше, либо ваш индексный алгоритм еще не совершенен, либо виноват скрипт. Сами знаете, цифры не голословны, пример питон-скрипта дающего такие результаты приводил.

Аватара пользователя
tonio_k
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#89

Сообщение tonio_k »

Lecron писал(а):
17 ноя 2020 10:12
Главный вопрос — почему внешний скрипт, а не штатный алгоритм? Включая выбор алгоритма применения.
потому, что правила в словаре rex могут быть "какими угодно" (например [ ]+= удалить двойные пробелы) и индексировать такое на уровне программы в принципе невозможно. Сделана поддержка замен регулярными выражениями - используйте как есть, будет работать для любых целей и задач и голосовых движков. Не достаточно? Хочется по другому? Вот вам поддержка скриптов, командной строки.
Для простых правил замен dic в Демагоге существует на выбор:
быстрый алгоритм (БА - хеширование правил в словаре)
и Прямой перебор (ПП).
Опытным путем выяснилось, что правила со звёздочками лучше применять отдельно и только прямым перебором. Если правила длинные/состоят из нескольких слов, то между хешированием и перебором разница в скорости начинает пропадать, плюс возрастает вероятность нежелательных замен связанных с особенностью работы быстрого алгоритма. Поэтому самому составителю словарей нужно с умом перераспределять правила между словарями, сделать это на уровне штатных алгоритмов для Балаболки/Демагога не возможно. Так что, штатные алгоритмы максимально универсальны - работают правильно и быстро и на сколько вообще это возможно, причём не только для русского языка и русских пользователей!, о чём надо тоже постоянно помнить и учитывать.
Для обычных и продвинутых составителей словарей штатных возможностей Балаболки/Демагога вполне достаточно. Перегружать программы дополнительными алгоритмами, которые в одном месте сработают, а в другом навредят это не правильно.

Единственное, что бы я как составитель словарей "со стажем" хотел бы увидеть в штатных (по умолчанию) свойствах Балаболки/Демагога, это отказ от рудементарной (в моем понимании) поддержки давней традиции:
1)словари rex применяются в начале и лишь потом словари dic.
2) словари dic автоматом сортируются перед применением по убыванию длины.
3) словари dic объединяются в один перед применением, а не применяются к тексту друг за другом по порядку.

Эти особенности не влияют на скорость применения словарей. А вот на удобство и гибкость решения задач путем перестановки словарей между собой за счёт их переименования (меняя тем самым их очередность) очень бы помогло. В Балаболке выше перечисленные проблемы решены за счёт введения нового стандарта словарей *.bxd но с ним уже другие трудности - все изменения в словаре только через диалог с окошками (не смотря на "наглядность", не удобно и не так быстро, заводить/редактировать правила как это можно сделать в простом текстовом редакторе).
Lecron писал(а):
17 ноя 2020 10:12
Разница скоростей не должна быть постоянной. Зависит от объема.
она "примерно" постоянна потому что сравнение скорости проводилась на одной той же книге одними и теми же словарями только в первой случае через скрипт, второй... тоже через скрипт, т.к. штатным способом применить к одному словарю dic быстрый алгоритм, а к другому dic прямой перебор без остановки процесса и смены настроек выбора алгоритма в Демагоге невозможно. А тупо применить штатно ко всем словарям dic либо только быстрый алгоритм либо только перебор нельзя т к. при быстром алгоритме на выходе будет сломан текст, а при прямом переборе штатно книга действительно будет часами обрабатывается.

Аватара пользователя
andko
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#90

Сообщение andko »

Подскажите, пожалуйста, я никогда не работал с командной строкой, что нужно сделать, чтобы, например, перевести все тексты из папки в fb2 в формат txt. В этой же папке и BLB2TXT.EXE находится.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#91

Сообщение balabolka »

andko писал(а):
27 ноя 2020 21:58
Что нужно сделать, чтобы, например, перевести все тексты из папки в fb2 в формат txt. В этой же папке и BLB2TXT.EXE находится.
Если все файлы, включая программу, находятся в одной папке, командная строка будет короткой:

Код: Выделить всё

blb2txt -f *.fb2
Программа извлечет текст из каждой книги и сохранит как новые текстовые файлы с такими же именами, как и у книг.

Эту команду можно выполнить разными способами:
  • набрать эту команду в каком-нибудь файловом менеджере, перейдя в нужную папку;
  • запустить интерфейс командной строки Windows, перейти в нужную папку и выполнить команду;
  • создать в нужной папке текстовый файл с расширением *.BAT, записать в этот файл строку команды, сохранить файл и запустить его так же, как запускается программа.

Рекомендую всегда указывать полный путь к папке с исходными книгами и полный путь к папке с извлеченным текстом. Например:

Код: Выделить всё

blb2txt -f "d:\My Books\*.fb2" -v "d:\My Text Files\"
Это лишь мой совет, исходя из собственного опыта.
Можно сохранить параметры командной строки в текстовом файле blb2txt.cfg. Файл будет выглядеть, например, так:

Код: Выделить всё

-f d:\My Books\*.fb2
-v d:\My Text Files\
На каждой строке должно располагаться по одному параметру.
Если рядом с программой есть такой файл конфигурации, можно просто запускать файл blb2txt.exe без параметров.

Аватара пользователя
andko
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#92

Сообщение andko »

balabolka писал(а):
28 ноя 2020 00:58
Можно сохранить параметры командной строки в текстовом файле blb2txt.cfg. Файл будет выглядеть, например, так:
КОД: ВЫДЕЛИТЬ ВСЁ

-f d:\My Books\*.fb2
-v d:\My Text Files\
На каждой строке должно располагаться по одному параметру.
Если рядом с программой есть такой файл конфигурации, можно просто запускать файл blb2txt.exe без параметров.
Сделал все точно так, программа открывается и сразу закрывается через полсекунды. Книги в папке My Text Files не появляются. Все антивирусы отключены.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#93

Сообщение balabolka »

andko писал(а):
28 ноя 2020 01:21
Книги в папке My Text Files не появляются.
Проверьте пути, указанные в файле конфигурации.
Перед -f и перед -v не должно быть пробелов. Между -f и путем к папке должен быть один пробел.

Должно работать, текст будет извлечен из файлов FB2.

Аватара пользователя
andko
Обыватель

Утилита для извлечения текста из файлов (blb2txt.exe)

#94

Сообщение andko »

balabolka писал(а):
28 ноя 2020 02:14
Проверьте пути, указанные в файле конфигурации.
Перед -f и перед -v не должно быть пробелов. Между -f и путем к папке должен быть один пробел.

Должно работать, текст будет извлечен из файлов FB2.
Благодарю вас, заработало. Файл конфига назвался почему-то blb2txt.cfg.txt, я его переименовал в blb2txt.cfg и книги переконвертировались.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#95

Сообщение balabolka »

Версия 1.95
  • Добавлен параметр для поиска файлов в подкаталогах.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#96

Сообщение balabolka »

Версия 1.96
  • Добавлены параметры для использования 32-битной версии библиотеки 7z.dll. Эта библиотека входит в состав программного продукта 7-Zip и позволяет извлекать данные из архивных файлов (ZIP, RAR и др.).
Новые параметры позволят извлечь текст и графические изображения из файлов внутри архивов, не распаковывая их. Файл 7z.dll необходимо скопировать в ту же папку, где находится утилита (или указать путь к библиотеке с помощью параметра командной строки). Если файл 7z.dll отсутствует, утилита не сможет извлекать данные из архивных файлов.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#97

Сообщение balabolka »

Версия 1.97
  • Исправлено извлечение текста из файлов внутри архивов формата RAR.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#98

Сообщение balabolka »

Версия 1.98
  • Исправлено применение IFilter для файлов внутри архивов.

Аватара пользователя
Dimsok
Постоялец

Утилита для извлечения текста из файлов (blb2txt.exe)

#99

Сообщение Dimsok »

Аналогичное предложение по ключу -f. Чтобы в TC можно было использовать подобную кнопку для объединения выделенных файлов -f %P%S -u -out "%Tmerged.%E"

Так же предложение добавить возможность менять расширение вырезанных файлов. Например:
%%FirstLine%%.cht.

Аватара пользователя
balabolka
V.I.P.

Утилита для извлечения текста из файлов (blb2txt.exe)

#100

Сообщение balabolka »

Dimsok писал(а):
05 апр 2021 13:44
Чтобы в TC можно было использовать подобную кнопку для объединения выделенных файлов -f %P%S -u -out "%Tmerged.%E"
Хм, а почему Вы не попросили разработчиков Total Commander решить эту проблему? Им-то это проще сделать. А вот моя программа принять на вход неопределенное количество имен файлов в командной строке не может; для этого мне надо что-то выдумывать (подскажите решение для командной строки, если кто-то знает).

Впрочем, решение для подобных проблем уже есть: надо использовать BAT-файл. Что-то вроде этого:

Код: Выделить всё

@echo off
set OUTPUTFILENAME=%~1
set OUTPUTFOLDER=E:\output
shift
:loop1
if "%~1"=="" goto after_loop
"D:\utils\blb2txt.exe" -f "%~1" -v "%OUTPUTFOLDER%"
shift
goto loop1
:after_loop
"D:\utils\blb2txt.exe" -u -f "%OUTPUTFOLDER%\*.txt" -out "%OUTPUTFILENAME%"
del /Q "%OUTPUTFOLDER%\*.txt"
Сохраните этот скрипт, например, как файл MERGE.BAT и выберите его для команды пользователя; параметры будут такими:

Код: Выделить всё

merged.txt %P%S
При выполнении команды из всех выбранных файлов по очереди будет извлечен текст во временную папку OUTPUTFOLDER (измените значение переменной на имя пустого каталога на Вашем компьютере). Затем содержимое всех текстовых файлов в этой папке будет объединено в один файл MERGED.TXT в том же каталоге, где и выбранные файлы. В конце работы скрипт очистит временную папку.

Имя нового файла надо передать BAT-файлу первым в командной строке; имена выбранных файлов - это второй, третий и все последующие параметры. Проверил на своем компьютере, должно работать.
Dimsok писал(а):
05 апр 2021 13:44
Так же предложение добавить возможность менять расширение вырезанных файлов. Например:
%%FirstLine%%.cht.
Не понял, о чем идет речь. Что такое "вырезанные файлы"?

Ответить

Вернуться в «Балаболка»