Утилита для извлечения текста из файлов (blb2txt.exe)
Модератор: balabolka
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.82
- Добавлена возможность использования переменной %FileName% в шаблоне для имени файла. При извлечении текста и сохранении на диске переменная будет заменяться именем входного текстового файла в имени нового файла.
- Добавлено распознавание формата входного документа для файлов с неизвестными расширениями.
- программа попытается распознать формат входного файла по его содержимому;
- программа постарается найти подходящий IFilter, установленный в операционной системе;
- если предыдущие попытки не удались, входной документ будет обработан как обычный текстовый файл.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.83
- Добавлены параметры для вставки дополнительного текста в сноски и примечания при извлечении данных из файлов форматов DOCX, FB2, FB3 и ODT.
- Добавлен параметр для указания формата входного файла. (Это может быть полезно для тех случаев, когда имя файла имеет неизвестное расширение или когда данные поступают из стандартного потока ввода.)
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.84
- Улучшено распознавание типов данных для формата EML.
- Обновлено извлечение текста из файлов форматов FB2 и FB3.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.85
- Добавлено извлечение текста для файлов в формате Markdown (разметка Markdown будет удалена из документа, останется только текст).
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.86
- Исправлено извлечение текста для файлов в формате Markdown.
- balabolka
- V.I.P.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.88
- Исправлено извлечение текста из файлов формата EPUB.
- Исправлено применение регулярных выражений к текстам на немецком языке.
- Lecron
- Специалист
Утилита для извлечения текста из файлов (blb2txt.exe)
Планируете ли добавить в blb2txt?balabolka писал(а):Добавлена настройка "Искать римские числа" в окно "Заменить числа словами".
Как реализовано распознание одиночных символов, особенно "I" и "X"? Много ли ложных срабатываний?
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Нет, так как замена чисел словами в "Балаболке" выполняется в интерактивном режиме. Для автоматической замены надо использовать словари.
Никак не реализовано: "Балаболка", встретив такой символ в тексте, предложит заменить его словом. Решение принимает человек.
- Lecron
- Специалист
Утилита для извлечения текста из файлов (blb2txt.exe)
Не знаю, ошибка это fb2-файла или программы, но если заголовок файла содержит
текст не извлекается. Замена 2.1 на 2.0 все исправляет.
Код: Выделить всё
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.1"
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Спасибо за информацию, учту это в следующей версии программы.
Подскажите, где Вы нашли такие книги FB2 (или в каком редакторе они были созданы).
- Lecron
- Специалист
Утилита для извлечения текста из файлов (blb2txt.exe)
Вряд ли поможет. КУРЧЕНКО ВЛАДЛЕНА - Королева ордена, но скачана не самиздата, а с флибусты. Дата создания — 2014 год. Может софт уже починили.
Встречаю ошибку извлечения нечасто, но бывает. Обычно достаточно почистить заголовок от "лишних" полей. Даже не углублялся в детали, что могло конфликтовать. А сейчас не прокатило.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Lecron
Спасибо за ссылку. Скачал эту книгу, буду разбираться.
Рекомендую всем всегда присылать мне те книги, из которых "Балаболка" не может извлечь текст. Только так можно выявить ошибки в алгоритмах извлечения текста.
Спасибо за ссылку. Скачал эту книгу, буду разбираться.
Рекомендую всем всегда присылать мне те книги, из которых "Балаболка" не может извлечь текст. Только так можно выявить ошибки в алгоритмах извлечения текста.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.89
- Исправлено извлечение текста из файлов формата FB2.
- Lecron
- Специалист
Утилита для извлечения текста из файлов (blb2txt.exe)
Спасибо за исправление. Прогнал ~1500 книг своего архива, ни одного сбоя.
Несколько предложений на перспективу развития.
1.Убрать отдельные ключи для работы stdin/out, используя стандартное обозначение знаком дефиса "-f -" и "-out -". А еще более привычно "-i" и "-o" :-), а файл там или пайп, дело десятое.
2.Следуя принципу единичной ответственности, разбить утилиту на две. Для преобразования текста, собственно blb2txt, и для работы с фрагментами, возможно blb2split. Будет легче парсить и комбинировать параметры, а пользователям легче разбираться.
3.Если это выходит за рамки, хотя бы выделите ключи разбиения в отдельный визуальный блок в help-е, похожий с блоком remove, csv, eml
PS. Будет повод сбросить большое число минорной версии и перейти к 2.0 :-)
Несколько предложений на перспективу развития.
1.Убрать отдельные ключи для работы stdin/out, используя стандартное обозначение знаком дефиса "-f -" и "-out -". А еще более привычно "-i" и "-o" :-), а файл там или пайп, дело десятое.
2.Следуя принципу единичной ответственности, разбить утилиту на две. Для преобразования текста, собственно blb2txt, и для работы с фрагментами, возможно blb2split. Будет легче парсить и комбинировать параметры, а пользователям легче разбираться.
3.Если это выходит за рамки, хотя бы выделите ключи разбиения в отдельный визуальный блок в help-е, похожий с блоком remove, csv, eml
PS. Будет повод сбросить большое число минорной версии и перейти к 2.0 :-)
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Lecron
Обещаю подумать над Вашими предложениями, но сразу могу сказать, что не стану делить утилиту на две отдельные программы. Это даже не обсуждается.
Обещаю подумать над Вашими предложениями, но сразу могу сказать, что не стану делить утилиту на две отдельные программы. Это даже не обсуждается.
-
- Обыватель
Утилита для извлечения текста из файлов (blb2txt.exe)
Спасибо за программу, очень удобно работать!
Небольшие пожелания, может быть вы решите их добавить:
1. Сделать возможно указания порядка Автор-Название. Сейчас идет название книги, ниже автор, хотелось бы также иметь возможность, чтобы сначала следовало имя автора, затем название книги. На мой взгляд так даже логичнее.
2. Сделать возможность указания шаблона вставки примечаний. Сейчас, если сделать автоматическую вставку примечаний, их затем приходится вручную править (я предпочитаю слышать когда начинается примечание и когда заканчивается, так удобнее слушать книги).
Приходится искать все [ и ], исправлять их на "Начало примечания", "Конец примечания". Само по себе это не сложно, сложности появляются, когда в книгах кроме примечаний в [] идут просто вставки текста, которые не нужно исправлять. Вот здесь можно засесть на долго, корректируя вручную.
Также в примечаниях, на мой взгляд, не нужны цифры, какой в них смысл? Мы же не ищем их в конце книги. Достаточно было бы обозначения "Начало примечания", "Конец примечания" (крайне желательно с правкой шаблона, т.к. в разных синтезах их идеально указывать по разному).
Надеюсь услышите голос вопиющего. Всех благ.
Небольшие пожелания, может быть вы решите их добавить:
1. Сделать возможно указания порядка Автор-Название. Сейчас идет название книги, ниже автор, хотелось бы также иметь возможность, чтобы сначала следовало имя автора, затем название книги. На мой взгляд так даже логичнее.
2. Сделать возможность указания шаблона вставки примечаний. Сейчас, если сделать автоматическую вставку примечаний, их затем приходится вручную править (я предпочитаю слышать когда начинается примечание и когда заканчивается, так удобнее слушать книги).
Приходится искать все [ и ], исправлять их на "Начало примечания", "Конец примечания". Само по себе это не сложно, сложности появляются, когда в книгах кроме примечаний в [] идут просто вставки текста, которые не нужно исправлять. Вот здесь можно засесть на долго, корректируя вручную.
Также в примечаниях, на мой взгляд, не нужны цифры, какой в них смысл? Мы же не ищем их в конце книги. Достаточно было бы обозначения "Начало примечания", "Конец примечания" (крайне желательно с правкой шаблона, т.к. в разных синтезах их идеально указывать по разному).
Надеюсь услышите голос вопиющего. Всех благ.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Как я понял, речь идет о книгах формата FB2, об извлечении аннотации из файла.
Идея Ваша понятна. Да, сейчас жёстко задан набор полей и их порядок при извлечении из FB2-файла: сначала название, затем автор и описание книги. Почему первым идет название книги, полагаю, очевидно: мои программы умеют давать названия новым файлам (текстовым и звуковым), используя первую строку текста; так как у одного автора может быть несколько произведений, то лучше включать в имя нового файла название книги, а не имя ее автора.
Сейчас мне бы не хотелось добавлять в свою утилиту новые параметры для настройки способа извлечения аннотаций из файлов FB2 и FB3. В этих аннотациях много разных полей: пришлось бы перечислять их где-то в документации, придумывать какие-то обозначения, придумывать способ форматирования извлеченных аннотаций. Например, напомню, что в аннотации файла формата FB2 имя, отчество и фамилия автора - это три разных поля, так что информацию об авторе можно записать и как "Лев Толстой", и как "Лев Николаевич Толстой", и как "Толстой, Лев Николаевич". (Кстати, авторов может быть несколько или не быть совсем.)
Информация из аннотации файла FB2 не кажется мне настолько важной, что ради нее надо усложнять программу. Утилита и так имеет много параметров.
Обещаю еще подумать над этим.
А это как раз подтверждение того, о чем писал выше: в программе так много настроек, что пользователи иногда повторно просят реализовать то, что уже есть в параметрах.
Насчет чисел внутри примечаний: это сложный вопрос. Кому-то они не нужны, так как рядом с числом есть полный текст примечания. Кто-то, наоборот, требует, чтобы извлеченный текст был похож на исходный текст в электронный книге, с номерами примечаний. Большинству пользователей всё равно. Сейчас я не готов добавить какой-либо специальный параметр для всего этого.--insert-note-begin текст или -inb текст
Вставить слова в начало сносок и примечаний внутри текста (например: Примечание редактора.). Параметр используется при извлечении текста из файлов форматов DOCX/FB2/FB3/ODT.
--insert-note-end текст или -ine текст
Вставить слова в конец сносок и примечаний внутри текста (например: Конец примечания.). Параметр используется при извлечении текста из файлов форматов DOCX/FB2/FB3/ODT.
Если задан текст для вставки в начало примечания, то номер примечания не извлекается.
-
- Обыватель
Утилита для извлечения текста из файлов (blb2txt.exe)
Спасибо, понял, в целом согласен с Вами, нагромождение настроек только усложняет систему, а не делает её удобной
Вот те раз! Вероятно я работал со старой версией программы, т.к. не помню таких настроек. Спасибо!
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.90
- Для извлечения текста из старых документов, созданных в Microsoft Word 6.0/95, используется текстовый редактор LibreOffice Writer (если офисный пакет LibreOffice установлен на компьютере).
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.91
- Обновлено извлечение текста из файлов формата EPUB.
-
- Обыватель
Утилита для извлечения текста из файлов (blb2txt.exe)
Здравствуйте! Почему-то кракозябры вместо кириллицы. Вот например как прописалось "Конец примечания":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 ".Конец примечания."
-
- Обыватель
Утилита для извлечения текста из файлов (blb2txt.exe)
Вместо cmd сделал простой ярлык, и добавил все параметры туда, теперь все в норме.
В целом вопрос закрыт, но можно иметь в виду, что через командную строку может не корректно передавать кириллицу, либо нужны доп. ковыряния, что наверное и не нужно.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Это не имеет отношения к моей программе. Ищите в интернете, как решить проблему с передачей кириллицы в командной строке. Например:
Как добиться правильной работы пакетных файлов (*.bat, *.cmd), содержащих кириллические пути?
Насколько я помню, можно добавить в начало BAT-файла команду CHCP для изменения текущей кодовой страницы:
Код: Выделить всё
@echo off
chcp 1251
balabolka -rn "Это русский текст"
-
- Обыватель
Утилита для извлечения текста из файлов (blb2txt.exe)
Здравствуйте. Насчет возможности настройки отображения имени автора. Все же было бы удобно иметь таковую, по меньшей мере для книг формата FB2. Связано это, в том числе, с тем, что имя автора часто дублируется в начале файла, в полях first-name / last-name, а затем уже непосредственно в тексте, перед самым началом:balabolka писал(а): ↑06 май 2020 14:03Почему первым идет название книги, полагаю, очевидно: мои программы умеют давать названия новым файлам (текстовым и звуковым), используя первую строку текста; так как у одного автора может быть несколько произведений, то лучше включать в имя нового файла название книги, а не имя ее автора.
Сейчас мне бы не хотелось добавлять в свою утилиту новые параметры для настройки способа извлечения аннотаций из файлов FB2 и FB3. В этих аннотациях много разных полей: пришлось бы перечислять их где-то в документации, придумывать какие-то обозначения, придумывать способ форматирования извлеченных аннотаций. Например, напомню, что в аннотации файла формата FB2 имя, отчество и фамилия автора - это три разных поля, так что информацию об авторе можно записать и как "Лев Толстой", и как "Лев Николаевич Толстой", и как "Толстой, Лев Николаевич". (Кстати, авторов может быть несколько или не быть совсем.)
<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)
speeck
Может быть, Вам стоит просто игнорировать аннотацию в книге FB2/FB3 (параметр --skip-summary)? Будет извлекаться только содержимое книги.
В "Балаболке" аннотация для книг извлекается по умолчанию только потому, что так же поступал и скрипт для извлечения текста, написанный разработчиком формата FB2 Дмитрием Грибовым. Его скрипт вставлял из аннотации в начало текста ФИО автора (имя, отчество, фамилия), название книги и ее описание (а если книга входит в состав цикла книг, то еще и название цикла). Я просто сделал также, для единообразия.
Предложенный Вами параметр добавить несложно, но так ли уж он нужен? Об этом я и писал в своем предыдущем сообщении: можно добавить много параметров для настройки показа текста, извлеченного из аннотации, но это не то, чем бы мне хотелось заниматься. Если пользователя не устраивает, как программа показывает аннотацию по умолчанию, можно просто не извлекать аннотацию вообще. Иначе можно настраивать ее показ до бесконечности (в спецификации для аннотации два десятка полей).
Кстати, а почему Вам так важно настроить показ ФИО? Я описал ситуацию с ФИО для примера, но мне лично способ записи имена автора не важен. Я бы не стал добавлять отдельный специальный параметр для своих нужд. (К тому же, надо дополнительно объяснять в документации, что параметр игнорирования аннотации и параметр настройки показа имени автора связаны между собой.)
Вывод. Согласен с Вами, что теоретически было бы неплохо иметь какой-то способ для настройки показа информации, извлеченной из аннотации книг FB2. Но пока мне не удалось найти элегантного решения: надо либо добавлять новые параметры для настройки, либо изобретать какой-то шаблон, либо что-то еще. Готов выслушать чужие идеи по этому поводу, так как, повторюсь, сам я не придумал хорошего варианта реализации.
Может быть, Вам стоит просто игнорировать аннотацию в книге FB2/FB3 (параметр --skip-summary)? Будет извлекаться только содержимое книги.
В "Балаболке" аннотация для книг извлекается по умолчанию только потому, что так же поступал и скрипт для извлечения текста, написанный разработчиком формата FB2 Дмитрием Грибовым. Его скрипт вставлял из аннотации в начало текста ФИО автора (имя, отчество, фамилия), название книги и ее описание (а если книга входит в состав цикла книг, то еще и название цикла). Я просто сделал также, для единообразия.
Предложенный Вами параметр добавить несложно, но так ли уж он нужен? Об этом я и писал в своем предыдущем сообщении: можно добавить много параметров для настройки показа текста, извлеченного из аннотации, но это не то, чем бы мне хотелось заниматься. Если пользователя не устраивает, как программа показывает аннотацию по умолчанию, можно просто не извлекать аннотацию вообще. Иначе можно настраивать ее показ до бесконечности (в спецификации для аннотации два десятка полей).
Кстати, а почему Вам так важно настроить показ ФИО? Я описал ситуацию с ФИО для примера, но мне лично способ записи имена автора не важен. Я бы не стал добавлять отдельный специальный параметр для своих нужд. (К тому же, надо дополнительно объяснять в документации, что параметр игнорирования аннотации и параметр настройки показа имени автора связаны между собой.)
Вывод. Согласен с Вами, что теоретически было бы неплохо иметь какой-то способ для настройки показа информации, извлеченной из аннотации книг FB2. Но пока мне не удалось найти элегантного решения: надо либо добавлять новые параметры для настройки, либо изобретать какой-то шаблон, либо что-то еще. Готов выслушать чужие идеи по этому поводу, так как, повторюсь, сам я не придумал хорошего варианта реализации.
-
- Обыватель
Утилита для извлечения текста из файлов (blb2txt.exe)
Не знал про эту особенность, да, нужно проверить, сегодня займусь этим. Хотя аннотации (именно аннотации, без сопутствующего) иногда вполне годные и их неплохо было бы оставить.balabolka писал(а): ↑27 май 2020 02:25В "Балаболке" аннотация для книг извлекается по умолчанию только потому, что так же поступал и скрипт для извлечения текста, написанный разработчиком формата FB2 Дмитрием Грибовым. Его скрипт вставлял из аннотации в начало текста ФИО автора (имя, отчество, фамилия), название книги и ее описание (а если книга входит в состав цикла книг, то еще и название цикла). Я просто сделал также, для единообразия.
Не знаю даже как сказать, в целом наверное не так важно, но оно сейчас есть, и я хотел это поднастроить. Еще раз повторюсь - для меня не составляет трудности состряпать для этого простейший скрипт, но если это можно было бы сделать в рамках единой программы, которая уже покрывает 98% потребностей, так было бы просто удобнее.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
speeck
Попробую добавить такой параметр (вместо --skip-summary).
Варианты будут определять способы размещения имени автора и названия книги друг относительно друга.
1-ый вариант:
2-ой вариант:
3-ий вариант:
4-ый вариант:
Описание книги будет извлекаться для всех вариантов, от 1 до 4.
Попробую добавить такой параметр (вместо --skip-summary).
Код: Выделить всё
--extract-summary <число> или -es <число>
Извлечь аннотацию из файлов форматов FB2/FB3 и вставить в начало текста.
Возможные значения для числового параметра:
0 - не извлекать аннотацию
1..4 - различные варианты форматирования текста аннотации
1-ый вариант:
Код: Выделить всё
Горе от ума
Александр Грибоедов
Код: Выделить всё
Александр Грибоедов
Горе от ума
Код: Выделить всё
Александр Грибоедов. Горе от ума
Код: Выделить всё
Горе от ума
- Lecron
- Специалист
Утилита для извлечения текста из файлов (blb2txt.exe)
Цифровое кодирование не дружелюбно. Предлагаю так
Код: Выделить всё
--extract-summary [default|empty|template]
default - нынешнее поведение (по умолчанию)
empty - не извлекать данные
template, шаблонная строка в стиле %first-name% - %last-name%
Параметр повторяемый. Повторение означает следующую строку в txt файле. Например %annotation%. Или предусмотреть разделитель строк в задании шаблона.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Lecron
Я же и писал как раз о том, что не хочу реализовывать никаких сложных шаблонов для такой мелкой опции. Оно того не стоит: только добавит проблем и пользователям, и мне.
Сейчас готов добавить несколько заранее заданных вариантов оформления текста, извлеченного из аннотации. Это максимум, чем согласен заняться.
Я же и писал как раз о том, что не хочу реализовывать никаких сложных шаблонов для такой мелкой опции. Оно того не стоит: только добавит проблем и пользователям, и мне.
Сейчас готов добавить несколько заранее заданных вариантов оформления текста, извлеченного из аннотации. Это максимум, чем согласен заняться.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.92
- Параметр --skip-summary преобразован в --extract-summary.
- По умолчанию извлечение аннотации из файлов форматов FB2 и FB3 отключено.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.93
- Исправлено извлечение аннотации из файлов форматов FB2 и FB3.
- Lecron
- Специалист
Утилита для извлечения текста из файлов (blb2txt.exe)
Решаю проблему с нужным мне символом ударения. Для чего применяю к самому файлу словаря, словарь accent_default.dic с правилом *<*=`
При любых вызовахВ вывод сыплется мусор
В приницпе подпереть костылем нетрудно. Предварительно переименовать в _default.txt, обработать, а потом вернуть. Но уведомить вас все равно решил.
При любых вызовах
Код: Выделить всё
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)
Код: Выделить всё
blb2txt.exe -x txt -f dictionaries\_default.dic -d dictionaries\accent_default.dic -v test -e utf8
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.94
- Исправлено автоматическое распознавание формата входного документа.
- merman
- Прохожий
Утилита для извлечения текста из файлов (blb2txt.exe)
Словари от tonio.k
В демагоге 8 минут....
в Балаболке 8 часов....
Мелкие улутшения до каких пор?
В демагоге 8 минут....
в Балаболке 8 часов....
Мелкие улутшения до каких пор?
- tonio_k
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Словари от tonio.k в штатном режиме и в Демагоге и в Балаболке по скорости работают примерно одинаково (час). Указанные вами "8 минут...." достигается за счет того, что в Демагоге словари применяются через отдельно написанные пользовательские скрипты lua. К каждому словарю через скрипты применяется индивидуальный алгоритм в зависимости от назначения словаря. Большой словарь rex заранее составлен (отредактирован) по специальной схеме с пометками индекс-слов по которым скриптом ищутся и применяются правила по найденным в тексте словам (получается уменьшенный в разы rex словарь состоящий из правил только к тем словам, которые есть в указанном отрезке текста и в самом словаре), а не применяются все правила скопом ко всему тексту.
Правила со звёздочками перенесены в отдельные словари dic а простые правила в другие словари dic и применяется либо прямой перебор (к словарям со звездочками в правилах) либо быстрый алгоритм(к словарям без звездочек с простыми правилами). Скрипт автоматом выбирает алгоритм исходя из названия словаря. Попробуйте из названий в словарях убрать кодовые слова в скобках(index,chisla и т.д.), а в словарях dic убрать "@" - и вот уже скорость не отличается от Балаболки.
не может быть такого. В Демагоге скорость применения словарей через скрипт максимум в 4 раза быстрее чем те же словари будут применены в штатном режиме. Значит в Балаболке будет примерно так же, а может чуть быстрее.
- Lecron
- Специалист
Утилита для извлечения текста из файлов (blb2txt.exe)
Главный вопрос — почему внешний скрипт, а не штатный алгоритм? Включая выбор алгоритма применения.
Вся предразметка просто не нужна. Индекс-слова в rex вполне можно извлекать при разборе словаря и пред-фильтровать правила перед применением к строке. dic с однословными правилами со звездочками, алгоритмически тоже прекрасно работает в индексном режиме. Что также означает, что индексные слова из rex тоже могут быть со звездочками.
Вся предразметка просто не нужна. Индекс-слова в rex вполне можно извлекать при разборе словаря и пред-фильтровать правила перед применением к строке. dic с однословными правилами со звездочками, алгоритмически тоже прекрасно работает в индексном режиме. Что также означает, что индексные слова из rex тоже могут быть со звездочками.
Разница скоростей не должна быть постоянной. Зависит от объема. Для 100 правил возможно будет быстрее прямой перебор, при росте объема, индекс будет все более и более эффективным, и для 100000 правил достигнет 2 порядков. Если у вас меньше, либо ваш индексный алгоритм еще не совершенен, либо виноват скрипт. Сами знаете, цифры не голословны, пример питон-скрипта дающего такие результаты приводил.
- tonio_k
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
потому, что правила в словаре rex могут быть "какими угодно" (например [ ]+= удалить двойные пробелы) и индексировать такое на уровне программы в принципе невозможно. Сделана поддержка замен регулярными выражениями - используйте как есть, будет работать для любых целей и задач и голосовых движков. Не достаточно? Хочется по другому? Вот вам поддержка скриптов, командной строки.
Для простых правил замен dic в Демагоге существует на выбор:
быстрый алгоритм (БА - хеширование правил в словаре)
и Прямой перебор (ПП).
Опытным путем выяснилось, что правила со звёздочками лучше применять отдельно и только прямым перебором. Если правила длинные/состоят из нескольких слов, то между хешированием и перебором разница в скорости начинает пропадать, плюс возрастает вероятность нежелательных замен связанных с особенностью работы быстрого алгоритма. Поэтому самому составителю словарей нужно с умом перераспределять правила между словарями, сделать это на уровне штатных алгоритмов для Балаболки/Демагога не возможно. Так что, штатные алгоритмы максимально универсальны - работают правильно и быстро и на сколько вообще это возможно, причём не только для русского языка и русских пользователей!, о чём надо тоже постоянно помнить и учитывать.
Для обычных и продвинутых составителей словарей штатных возможностей Балаболки/Демагога вполне достаточно. Перегружать программы дополнительными алгоритмами, которые в одном месте сработают, а в другом навредят это не правильно.
Единственное, что бы я как составитель словарей "со стажем" хотел бы увидеть в штатных (по умолчанию) свойствах Балаболки/Демагога, это отказ от рудементарной (в моем понимании) поддержки давней традиции:
1)словари rex применяются в начале и лишь потом словари dic.
2) словари dic автоматом сортируются перед применением по убыванию длины.
3) словари dic объединяются в один перед применением, а не применяются к тексту друг за другом по порядку.
Эти особенности не влияют на скорость применения словарей. А вот на удобство и гибкость решения задач путем перестановки словарей между собой за счёт их переименования (меняя тем самым их очередность) очень бы помогло. В Балаболке выше перечисленные проблемы решены за счёт введения нового стандарта словарей *.bxd но с ним уже другие трудности - все изменения в словаре только через диалог с окошками (не смотря на "наглядность", не удобно и не так быстро, заводить/редактировать правила как это можно сделать в простом текстовом редакторе).
она "примерно" постоянна потому что сравнение скорости проводилась на одной той же книге одними и теми же словарями только в первой случае через скрипт, второй... тоже через скрипт, т.к. штатным способом применить к одному словарю dic быстрый алгоритм, а к другому dic прямой перебор без остановки процесса и смены настроек выбора алгоритма в Демагоге невозможно. А тупо применить штатно ко всем словарям dic либо только быстрый алгоритм либо только перебор нельзя т к. при быстром алгоритме на выходе будет сломан текст, а при прямом переборе штатно книга действительно будет часами обрабатывается.
- andko
- Обыватель
Утилита для извлечения текста из файлов (blb2txt.exe)
Подскажите, пожалуйста, я никогда не работал с командной строкой, что нужно сделать, чтобы, например, перевести все тексты из папки в fb2 в формат txt. В этой же папке и BLB2TXT.EXE находится.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (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)
Сделал все точно так, программа открывается и сразу закрывается через полсекунды. Книги в папке My Text Files не появляются. Все антивирусы отключены.balabolka писал(а): ↑28 ноя 2020 00:58Можно сохранить параметры командной строки в текстовом файле blb2txt.cfg. Файл будет выглядеть, например, так:
КОД: ВЫДЕЛИТЬ ВСЁ
-f d:\My Books\*.fb2
-v d:\My Text Files\
На каждой строке должно располагаться по одному параметру.
Если рядом с программой есть такой файл конфигурации, можно просто запускать файл blb2txt.exe без параметров.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Проверьте пути, указанные в файле конфигурации.
Перед -f и перед -v не должно быть пробелов. Между -f и путем к папке должен быть один пробел.
Должно работать, текст будет извлечен из файлов FB2.
- andko
- Обыватель
Утилита для извлечения текста из файлов (blb2txt.exe)
Благодарю вас, заработало. Файл конфига назвался почему-то blb2txt.cfg.txt, я его переименовал в blb2txt.cfg и книги переконвертировались.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.95
- Добавлен параметр для поиска файлов в подкаталогах.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.96
- Добавлены параметры для использования 32-битной версии библиотеки 7z.dll. Эта библиотека входит в состав программного продукта 7-Zip и позволяет извлекать данные из архивных файлов (ZIP, RAR и др.).
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.97
- Исправлено извлечение текста из файлов внутри архивов формата RAR.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Версия 1.98
- Исправлено применение IFilter для файлов внутри архивов.
- Dimsok
- Постоялец
Утилита для извлечения текста из файлов (blb2txt.exe)
Аналогичное предложение по ключу -f. Чтобы в TC можно было использовать подобную кнопку для объединения выделенных файлов -f %P%S -u -out "%Tmerged.%E"
Так же предложение добавить возможность менять расширение вырезанных файлов. Например:
%%FirstLine%%.cht.
Так же предложение добавить возможность менять расширение вырезанных файлов. Например:
%%FirstLine%%.cht.
- balabolka
- V.I.P.
Утилита для извлечения текста из файлов (blb2txt.exe)
Хм, а почему Вы не попросили разработчиков 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"
Код: Выделить всё
merged.txt %P%S
Имя нового файла надо передать BAT-файлу первым в командной строке; имена выбранных файлов - это второй, третий и все последующие параметры. Проверил на своем компьютере, должно работать.
Не понял, о чем идет речь. Что такое "вырезанные файлы"?