﻿Балаболка (утилита для извлечения текста из файлов), версия 1.117
Copyright (с) 2013-2025 Илья Морозов
Все права защищены

WWW: https://www.cross-plus-a.com/ru/btext.html
E-mail: crossa@list.ru

Тип лицензии: Freeware
Операционная система: Microsoft Windows XP/Vista/7/8/10/11


Программа позволяет извлекать текст из файлов различных форматов.
Извлеченный текст может быть объединен в один файл и/или разбит на несколько файлов.
К тексту могут быть применены правила из словарей коррекции произношения программы "Балаболка".
Поддерживаемые форматы файлов: AZW, AZW3, CHM, DjVu (DjVu+OCR), DOC, DOCX, EPUB, FB2 (FB2.ZIP, FBZ), FB3, HTML, LIT, MD, MHT, MOBI, ODP, ODS, ODT, PDB, PDF, PPT, PPTX, PRC, RTF, TCR, TXT, TXTZ, WPD, WRI, XLS, XLSX.
Интерфейс IFilter будет использован для неизвестных программе форматов файлов.

Программа позволяет использовать 32-битную версию библиотеки 7z.dll для извлечения данных из архивных файлов (ZIP, RAR и др.). 7z.dll входит в состав архиватора 7-Zip: он поддерживает множество форматов данных, включая собственный формат 7z.
https://www.7-zip.org


*** Командная строка ***

blb2txt [параметры ...]


*** Параметры командной строки ***

-f <имя_файла>
   Имя файла или маска для имен файлов, из которых требуется извлечь текст. Командная строка может содержать несколько параметров [-f].

-fl <имя_файла>
   Открыть файл со списком текстовых файлов (по одному имени файла на каждой строке). Командная строка может содержать несколько параметров [-fl].

-v <имя_папки>
   Имя папки для сохранения файла с извлеченным текстом.

-p <текст>
   Шаблон для имени файла с извлеченным текстом (например, "Текстовый документ"). Если параметр не задан, в качестве шаблона используется имя исходного файла.
   Используйте переменную %FileName% в шаблоне для имени файла, чтобы вставить имя исходного файла (без расширения).
   Используйте переменную %FirstLine%, чтобы вставить первую строку текста из документа.
   Используйте переменную %Header%, чтобы вставить заголовок из оглавления документа.
   Используйте переменную %Number%, чтобы поменять позицию порядкового номера внутри имени файла.
   Используйте переменную %Title%, чтобы вставить название HTML-документа (только для файлов формата HTML).
   Внимание! При использовании в командном файле специальный символ % дублируется. Например: -p %%FirstLine%%

-ext <текст>
   Расширение имени файла с извлеченным текстом. По умолчанию значение равно "txt".

-out <имя_файла>
   Полное имя файла с извлеченным текстом. Рекомендуется применять параметр только в тех случаях, когда утилита используется в составе другого программного продукта.
   Если утилита применяется как внешняя программа для извлечения текста, команда запуска утилиты будет содержать имя входного файла и имя файла с извлеченным текстом.

-s
   Искать файлы в подкаталогах.

--create-folder или -cf
   Создать подкаталог для каждого файла, из которого извлекается текст. Имя файла будет именем подкаталога.

-i
   Читать данные из стандартного потока ввода (STDIN). Формат файла будет автоматически определен по содержимому потока данных.
   Если параметр задан, параметр [-f] игнорируется.

-o
   Записать текст в стандартный поток вывода (STDOUT). Если параметр задан, параметры [-v] и [-p] игнорируются.

-u
   Объединить текст из нескольких файлов в один файл.

-b
   Добавить порядковый номер перед именем файла (при разбиении текста на части).

-a
   Добавить порядковый номер после имени файла (при разбиении текста на части).

-n <число>
   Установить стартовый порядковый номер файла при разбиении текста на части. По умолчанию значение равно 1.

-e <кодировка>
   Кодировка файла с извлеченным текстом ("ansi", "utf8" или "unicode"). По умолчанию значение равно "ansi".

-t <число>
   Задать способ разбиения текста: использование заданного размера части текста. Число обозначает количество символов (включая пробелы, знаки препинания, символы перевода строки и возврата каретки).

-k <ключевое_слово>
   Задать способ разбиения текста: поиск ключевого слова в исходном файле. Параметр является регистрозависимым. Командная строка может содержать несколько параметров [-k].

-r <ключевое_слово>
   Поделить текст на ключевом слове и удалить его из текста. Параметр является регистрозависимым. Командная строка может содержать несколько параметров [-r].

-w
   Задать способ разбиения текста: поиск двух пустых строк подряд.

-l
   Задать способ разбиения текста: поиск строки, где все буквы заглавные.

-c
   Задать способ разбиения текста: использовать оглавление документа. Программа извлечет позиции начал глав из электронной книги (если файл книги содержит такую информацию).

-toc
   Задать способ разбиения текста: создать оглавление и разбить на части. Программа поделит текст при помощи найденных ключевых слов ("глава", "том" и др.).
   Если параметр используется совместно с параметром [-c], программа сначала попытается извлечь оглавление из документа; если это не удастся, будет создано новое оглавление.

-m <число>
   Задать минимальный размер каждой части при разбиении текста. Число обозначает количество символов (включая пробелы, знаки препинания, символы перевода строки и возврата каретки).

-j <число>
   Игнорировать начало следующей главы при делении текста, если размер предыдущей части текста меньше заданного размера. Число обозначает количество символов (включая пробелы и знаки препинания). Параметр используется совместно с параметрами [-c] или [-toc].

-hh <текст>
   Вставить текст перед заголовками (например: ## Глава 1).

-d <имя_файла>
   Применить к тексту правила для коррекции произношения из словаря (файла с расширением *.BXD, *.DIC или *.REX). Командная строка может содержать несколько параметров [-d].
   Пользователь может редактировать словарь в приложении "Балаболка".

-if
   Использовать интерфейс IFilter для извлечения текста. Если фильтр для формата файла отсутствует в системе, программа использует свой метод извлечения текста.

-g <имя_папки>
   Имя папки для сохранения графических файлов, извлеченных из документа.

-cvr <имя_папки>
   Имя папки для сохранения обложки книги, извлеченной из документа.

--clone-file-time или -cft
   Созданный текстовый файл будет иметь те же дату и время создания, как у исходного документа. Параметр игнорируется, если текст объединяется из нескольких файлов или разбивается на части.

-x <тип_файла>
   Задать формат входного документа. Это позволяет указать тип файла с неизвестным расширением. Например: -x doc

-pwd <текст>
   Задать пароль для извлечения текста из файла формата PDF.

-dll <имя_файла>
   Полный путь к файлу 7z.dll. Эта 32-битная версия библиотеки позволяет извлекать данные из архивных файлов (ZIP, RAR и др.). 7z.dll входит в состав архиватора 7-Zip.
   Если параметр не задан, программа и библиотека должны находиться в одной папке. Если файл 7z.dll отсутствует, программа не сможет извлекать данные из архивных файлов.

-dex <типы_файлов>
   Задать форматы файлов, которые должны быть извлечены из архивов. Типы файлов необходимо перечислить через запятую, например: -dex "fb2,epub"
   Командная строка может содержать несколько параметров [-dex]. Если параметр не задан, программа извлечет текст из файлов всех форматов внутри архивных файлов.
   Если требуется извлечь данные из файлов только тех форматов, которые поддерживаются программой, необходимо использовать значение "all-". Например: -dex all-

-dne <типы_файлов>
   Задать форматы файлов, которые необходимо игнорировать при извлечении данных из архивных файлов. Типы файлов необходимо перечислить через запятую, например: -dne "exe,dll"
   Командная строка может содержать несколько параметров [-dne]. Если параметр не задан, программа извлечет текст из файлов всех форматов внутри архивных файлов.

-dp
   Показать индикатор прогресса выполнения в окне консольного приложения.

-cfg <имя_файла>
   Задать имя файла конфигурации с параметрами командной строки (текстовый файл, каждая строка которого содержит по одному параметру). Если параметр не задан, будет выбран файл "blb2txt.cfg" в той же папке, что и консольное приложение.

-h
   Показать описание параметров командной строки.

--remove-spaces или -rs
   Удалить лишние пробелы (два и более пробела подряд, неразрывные пробелы).

--remove-hyphens или -rh
   Удалить знаки переноса на концах строк в тексте.

--remove-linebreaks или -rl
   Удалить разрывы строк внутри абзацев.

--remove-empty-lines или -rm
   Удалить все пустые строки.

--replace-empty-lines или -rp
   Заменить несколько пустых строк одной пустой строкой.

--remove-square-brackets или -rsb
   Удалить текст внутри [квадратных скобок].

--remove-curly-brackets или -rcb
   Удалить текст внутри {фигурных скобок}.

--remove-angle-brackets или -rab
   Удалить текст внутри <угловых скобок>.

--remove-round-brackets или -rrb
   Удалить текст внутри (круглых скобок).

--remove-comments или -rc
   Удалить комментарии. Однострочные комментарии начинаются с // и продолжаются до конца строки. Многострочные комментарии начинаются с /* и завершаются */.

--remove-page-numbers или -rpn
   Удалить номера страниц (это может быть полезно для файлов форматов DjVu/PDF).

--fix-ocr-errors или -ocr
   Исправить ошибки, возникшие при оптическом распознавании текста (только для языков с кириллическими алфавитами).

--fix-letter-spacing или -ls
   Убрать разрядку в словах (например: п р о б е л, _с_л_о_в_о).

--add-period или -ap
   Добавить точку, если в конце абзаца нет знака препинания.

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

--skip-notes или -sn
   Игнорировать список примечаний в конце файлов форматов DOCX/FB2/FB3/MD/ODT.

--include-notes <число> или -in <число>
   Добавить сноски и примечания из файлов форматов DOCX/FB2/FB3/MD/ODT внутрь текста. Возможные значения для числового параметра:
   0 - удалить ссылки на примечания из текста;
   1 - сохранить текущие позиции сносок и примечаний в тексте (значение используется по умолчанию);
   2 - переместить сноски и примечания в конец предложений;
   3 - переместить сноски и примечания в конец абзацев.

--insert-note-begin <текст> или -inb <текст>
   Вставить слова в начало сносок и примечаний внутри текста (например: Примечание редактора.).
   Параметр используется при извлечении текста из файлов форматов DOCX/FB2/FB3/MD/ODT.

--insert-note-end <текст> или -ine <текст>
   Вставить слова в конец сносок и примечаний внутри текста (например: Конец примечания.).
   Параметр используется при извлечении текста из файлов форматов DOCX/FB2/FB3/MD/ODT.

--extract-tables <число> или -et <число>
   Извлечь таблицы из файлов форматов DOCX/FB2/FB3/ODT. Возможные значения для числового параметра:
   0 - удалить таблицы;
   1 - извлечь данные из каждой ячейки таблицы как новую строку текста (значение используется по умолчанию);
   2 - сохранить форматирование таблицы при извлечении текста.

--csv-comma
   Использовать запятую как разделитель значений колонок при извлечении данных из файлов форматов XLS/XLSX/ODS (используется по умолчанию).

--csv-semicolon
   Использовать точку с запятой как разделитель значений колонок при извлечении данных из файлов форматов XLS/XLSX/ODS.

--csv-space
   Использовать пробел как разделитель значений колонок при извлечении данных из файлов форматов XLS/XLSX/ODS.

--csv-tab
   Использовать табуляцию как разделитель значений колонок при извлечении данных из файлов форматов XLS/XLSX/ODS.

--csv-double-quote
   Использовать двойные кавычки как ограничитель строк при извлечении данных из файлов форматов XLS/XLSX/ODS (используются по умолчанию).

--csv-single-quote
   Использовать одиночные кавычки как ограничитель строк при извлечении данных из файлов форматов XLS/XLSX/ODS.

--eml-save <имя_папки>
   Извлечь файлы, прикреплённые к сообщению, из документов формата EML и сохранить в заданной папке.

--eml-att
   Извлечь список имён файлов, прикреплённых к сообщению, из документов формата EML. Имена файлов будут перечислены через запятую.

--eml-cc
   Извлечь поле "Cc" из заголовка сообщения в файле формата EML ("carbon copy": имена и адреса вторичных получателей письма, которым направляется копия).

--eml-date <формат_даты>
   Извлечь поле "Date" из заголовка сообщения в файле формата EML (дата и время отправки письма). Формат даты задан при помощи специальных символов ("d", "m", "y" и др.). Например: "dd.mm.yyyy hh:nn:ss".

--eml-from
   Извлечь поле "From" из заголовка сообщения в файле формата EML (имя и адрес отправителя).

--eml-org
   Извлечь поле "Organization" из заголовка сообщения в файле формата EML (название организации, которая предоставила доступ к сети для отправки письма).

--eml-rt
   Извлечь поле "Reply-To" из заголовка сообщения в файле формата EML (имя и адрес, куда следует адресовать ответы на письмо).

--eml-subj
   Извлечь поле "Subject" из заголовка сообщения в файле формата EML (тема письма).

--eml-to
   Извлечь поле "To" из заголовка сообщения в файле формата EML (имя и адрес получателя).


*** Примеры ***

Извлечь текст из документа "book.doc" и сохранить как текстовый файл "book.txt" в указанной папке:

blb2txt -f "d:\Docs\book.doc" -v "d:\Text\"


Если указан только один входной файл, для извлечения текста может быть использована такая командная строка:

blb2txt -f "d:\Docs\book.doc" -out "d:\Text\book.txt"


Извлечь текст из файлов форматов DOC и RTF, удалить пустые строки и сохранить как текстовые файлы в кодировке UTF-8:

blb2txt -f "d:\Docs\*.doc" -f "d:\Docs\*.rtf" -v "d:\Text\" -e utf8 -rm


Извлечь текст из всех текстовых файлов в папке, объединить и сохранить как текстовый файл "Документ.txt":

blb2txt -f "d:\Docs\*.txt" -v "d:\Text\" -p "Документ" -u


Извлечь текст из документа "document.doc", разбить на части размером 100 Кб и сохранить как файлы с именами "Документ 20.txt", "Документ 21.txt":

blb2txt -f "d:\Docs\document.doc" -v "d:\Text\" -p "Документ" -a -n 20 -t 100000


Извлечь текст из книги "book.fb2", найти слова "ГЛАВА" и "ОГЛАВЛЕНИЕ" для того, чтобы разбить текст на части и сохранить как файлы с именами "Книга 1.txt", "Книга 2.txt":

blb2txt -f "d:\Book\book.fb2" -v "d:\Text\" -p "Книга" -k "ГЛАВА" -k "ОГЛАВЛЕНИЕ"


Извлечь текст из книги "book.epub", найти символы "###" для того, чтобы разбить его на части, и удалить символы из текста:

blb2txt -f "d:\Book\book.epub" -v "d:\Text\" -p "Книга" -r "###"


Извлечь текст из книги "book.fb2", разбить текст на части, используя оглавление, и сохранить как файлы с названиями глав в качестве имен. Размер нового текстого файла не должен быть меньше одного килобайта:

blb2txt -f "d:\Book\book.fb2" -v "d:\Text\" -p "%Number% - %Header%" -c -j 1024


Прочесть текст из стандартного потока ввода, удалить лишние пробелы, разрывы строк внутри абзацев и пустые строки, записать текст в стандартный поток вывода:

blb2txt -i -o --remove-spaces --remove-linebreaks --replace-empty-lines


Извлечь текст из файлов с расширением *.AAA как из документов формата EPUB.

blb2txt -f "d:\Book\*.aaa" -v "d:\Text\" -x epub


Извлечь текст из документов Microsoft Word, находящихся внутри архивных файлов формата ZIP:

blb2txt -f "d:\Archive\*.zip" -v "d:\Text\" -dll "e:\7-Zip\7z.dll" -dex doc,docx


*** Файл конфигурации ***

Параметры можно сохранить как файл конфигурации "blb2txt.cfg" в той же папке, что и консольное приложение.

Пример содержимого файла:
=====================
-f d:\Docs\*.rtf
-f d:\Books\*.epub
-f d:\Books\*.fb2
-v d:\Text
-b
-n 1
-t 25000
-e utf8
-d d:\Dict\rules.bxd
--remove-spaces
--remove-linebreaks
--replace-empty-lines
=====================

Программа может комбинировать параметры из файла конфигурации и командной строки.


*** Порядок операций ***

Программа выполняет операции в следующем порядке:

1.  Извлечь текст из файла.
2.  Форматировать текст: удалить лишние пробелы, разрывы строк и т.д. (если заданы соответствующие параметры).
3.  Объединить текст в один файл (если задан соответствующий параметр).
4.  Разбить текст на части (если заданы соответствующие параметры).
5.  Применить правила коррекции произношения (если заданы соответствующие параметры).
6.  Сохранить текстовый файл или файлы на диске.


*** Использование оглавления ***

Программа позволяет поделить текст на части, используя оглавление. Оглавление может быть получено двумя способами:
- извлечено из электронной книги; это доступно для следующих форматов: AZW, CHM, DOCX, EPUB, FB2, HTML, LIT, MHT, MOBI, ODT, PDB, PRC;
- создано заново; программа найдет в тексте ключевые слова ("глава", "том" и др.) для русского, украинского, английского и еще нескольких языков.
Следует с осторожностью использовать эту функцию, так как результаты могут быть непредсказуемыми. 

Например, в некоторых электронных книгах оглавление содержит ссылки на каждое примечание в конце текста. Из-за этого каждое примечание будет сохранено в отдельном текстовом файле.

HTML предлагает шесть заголовков разного уровня, которые показывают относительную важность секции, расположенной после заголовка.
Тег <h1> представляет собой наиболее важный заголовок первого уровня, а тег <h6> служит для обозначения заголовка шестого уровня и является наименее значительным.
Программа включит в оглавление все шесть видов заголовков, что может привести к большому количеству пунктов оглавления.


*** Лицензия ***

Коммерческое использование программы допускается только с разрешения правообладателя.

Запрещается использование программного продукта на компьютерах, принадлежащих органам государственной власти и органам местного самоуправления Российской Федерации, законодательным и судебным органам Российской Федерации, структурным подразделениям российских политических партий. Запрещается использование программного продукта на компьютерах, принадлежащих правоохранительным органам и федеральным службам Российской Федерации, Вооружённым силам Российской Федерации. Запрещается использование программы религиозными объединениями и организациями в Российской Федерации. Запрещается использование программного продукта внутри зданий, сооружений и помещений объектов религиозного назначения, а также внутри зданий, предназначенных для обучения религии. Запрещается использование программы в суворовских военных училищах, нахимовских военно-морских училищах, кадетских корпусах, кадетских классах образовательных учреждений. Запрещается использование программного продукта на компьютерах, принадлежащих "Всероссийскому ордена Трудового Красного Знамени обществу слепых", "Общероссийскому народному фронту", российскому движению детей и молодёжи "Движение первых" и всероссийскому молодежному военно-патриотическому общественному движению "Юнармия". Запрещается использование программного продукта Общественной палатой РФ и региональными общественными палатами. Запрещается применение программного продукта российскими средствами массовой информации и коммуникации. Запрещается использование программы на компьютерах, находящихся в личном пользовании членов и сотрудников вышеперечисленных организаций, а также членов их семей. Запрещается использование программного продукта на территории Государства Эритрия, Исламской Республики Иран, Корейской Народно-Демократической Республики, Республики Беларусь, Республики Куба, Республики Никарагуа, Сирийской Арабской Республики, Чеченской Республики, а также на территории полуострова Крым.

###