Вопрос или проблема
Мне нужен способ извлечения текста из всех типов документов MS Office (Word, Excel, Powerpoint) в Linux. Я представляю, что для этого может быть несколько различных подходов, таких как Bash или Python скрипт, или конвертация их в PDF, а затем извлечение текста с помощью инструмента вроде pdftotext.
Похоже, это может быть обычным требованием. Существует ли установленный порядок или инструмент для этого?
Catdoc может конвертировать doc, xls, и ppt в текст. Вторая опция – wvWare.
Для дополнительных утилит проверьте http://www.linux.com/archive/articles/52385 для конвертеров word в текст.
Я наконец нашел идеальный инструмент для скриптового парсинга документов, это apache-tika, он может парсить огромное количество нетекстовых форматов в текст, что очень круто!
Получите Apache Tika здесь:
(Пользователи Mac Homebrew: brew install tika
)
Интерфейс командной строки работает следующим образом:
tika --text something.docx > something.txt
Abiword может конвертировать из командной строки между любыми файловыми форматами, которые он знает.
Конвертировать из Word в чистый текст:
abiword --to=txt myfile.doc
Сделать pdf из Word файла:
abiword --to=pdf myfile.doc
И так далее. Результаты в этих случаях будут myfile.txt или myfile.pdf. Если вы хотите указать имя выходного файла, вы можете сделать и это:
abiword --to=txt --to-name=output.txt myfile.doc
Конвертировать ODT в Word:
abiword --to=doc myfile.odt
Конвертировать Word в ODT:
abiword --to=odt myfile.doc
Справедливости ради, стоит отметить, что AbiWord использует wvWare для обработки документов Word, но даже на домашней странице wvWare рекомендуется использовать AbiWord вместо этого для большинства конверсий.
Я ненавижу текстовые процессоры. Это основная причина, по которой у меня установлен AbiWord.
Вам также может быть интересно unoconv, который является похожим инструментом, поддерживающим форматы, знакомые OpenOffice (включая таблицы и подобное), но у меня лично нет опыта с ним.
С помощью LibreOffice вы можете сделать:
libreoffice --invisible --convert-to pdf file1.ppt file2.ppt
Вы можете использовать CUPS (виртуальный принтер) и используя ld.
wv – это один из вариантов, и если я правильно помню, OpenOffice можно указать экспортировать в pdf и выйти через командную строку.
Если вы хотите использовать Apache Tika в проекте на Python, пожалуйста, ознакомьтесь с этой статьей в блоге.
libreoffice --cat
Установка на Ubuntu 24.10:
sudo apt install libreoffice
Использование:
libreoffice --cat test.docx
Чтобы протестировать, я использовал этот тестовый документ test.docx, который я создал, конвертировав его из файла .odt с помощью LibreOffice. Результат был следующим:
Заголовок моего файла
Содержание
Заголовок моего файла 1
H2 1 1
H3 1 1 1
H3 1 2 1
H2 2 2
H3 2 1 2
H3 2 2 2
H2 1
H3 1 1
H3 1 2
Первый очень важный абзац.
А теперь очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень длинный параграф, который разбивается на две строки.
Внешняя ссылка.
Ссылка на H2 1 на странице: 1
https://commons.wikimedia.org/wiki/File:Fractal_Broccoli.jpg
Список:
• элемент 1
• элемент 2
• элемент 3
Таблица:
Заголовок 1 Заголовок 2 Заголовок 3
Элемент 1 1 Элемент 1 2 Элемент 1 3
Элемент 2 1 Элемент 2 2 Элемент 2 3
H2 2
H3 2 1
H3 2 2
Это немного странно в некоторых местах, но вполне пригодно для использования. Вот PNG-превью docx:
MarkItDown от Microsoft
https://github.com/microsoft/markitdown
Этот инструмент с открытым исходным кодом на Python конвертирует множество форматов в Markdown, и Word Docs – один из них. Это, строго говоря, не просто текст, как спрашивалось, но это должно уже подойти для нескольких случаев использования простого текста, таких как grepping.
На Ubuntu 24.10 я установил MarkItDown 0.0.1a3 с помощью:
pipx install markitdown
а затем сделать конвертацию с помощью:
markitdown test.docx
Тестируя его снова с моим test.docx
, я получил:
# Заголовок моего файла
**Содержание**
[Заголовок моего файла 1](#__RefHeading___Toc248_3789614499)
[H2 1 1](#__RefHeading___Toc107_1055259341)
[H3 1 1 1](#__RefHeading___Toc109_1055259341)
[H3 1 2 1](#__RefHeading___Toc111_1055259341)
[H2 2 2](#__RefHeading___Toc148_1055259341)
[H3 2 1 2](#__RefHeading___Toc109_10552593411)
[H3 2 2 2](#__RefHeading___Toc111_10552593411)
## H2 1
### H3 1 1
### H3 1 2
Первый очень важный абзац.
А теперь очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень длинный параграф, который разбивается на две строки.
[Внешняя ссылка](http://example.com/).
Ссылка на H2 1 на странице: 1
[https://commons.wikimedia.org/wiki/File:Fractal\_Broccoli.jpg](https://commons.wikimedia.org/wiki/File%3AFractal_Broccoli.jpg)
![](data:image/jpeg;base64...)
Список:
* элемент 1
* элемент 2
* элемент 3
Таблица:
| Заголовок 1 | Заголовок 2 | Заголовок 3 |
| --- | --- | --- |
| Элемент 1 1 | Элемент 1 2 | Элемент 1 3 |
| Элемент 2 1 | Элемент 2 2 | Элемент 2 3 |
## H2 2
### H3 2 1
### H3 2 2
Docsplit – идеальный инструмент для извлечения текста из pdf. Это ruby gem. Поэтому вы должны установить ruby и gem в вашу систему Linux перед использованием команды docsplit.
Если в вашей системе нет ruby и gem, пожалуйста, следуйте инструкции.
Вы должны быть root, чтобы установить программное обеспечение (предполагая, что вы хотите, чтобы оно было доступно всем пользователям).
Установите ruby на linux: yum install ruby
Установите gem, пожалуйста, скачайте последнюю версию gem пакета, затем следуйте инструкции
tar xzf rubygems-x.x.xx.tgz
cd rubygems-x.x.xx
ruby setup.rb
Теперь, когда RubyGems установлен, у вас должна быть команда gem (gem это команда, используемая для взаимодействия с системой пакетов RubyGems). Проверьте, работая:
gem list
Теперь перейдите к следующему шагу, чтобы установить docsplit gem, пожалуйста, перейдите на следующий сайт.
http://documentcloud.github.com/docsplit/
1.doc
catdoc или antiword для doc файлов для конвертации можно использовать следующую команду
catdoc file.doc > file
или antiword file.doc > file
-
docx
docx2txt -
pdf
emacs file.pdf
ctrl-x ctrl-s file
Ответ или решение
Извлечение текста из документов MS Office в Linux
Для пользователей Linux часто возникает необходимость извлечения текста из документов Microsoft Office (Word, Excel, PowerPoint). В этой статье рассмотрим несколько подходов и инструментов, которые помогут вам выполнить эту задачу.
1. Apache Tika
Введение: Apache Tika — это мощный инструмент, который может распознавать и анализировать файлы различных форматов, включая файлы MS Office.
Установка и использование:
- Установите Apache Tika, используя пакетный менеджер:
brew install tika # для MacOS
- Запустите извлечение текста из документа:
tika --text something.docx > something.txt
Apache Tika поддерживает широкий спектр форматов файлов, что делает его универсальным инструментом для обработки документов в сценариях автоматизации.
2. AbiWord
Описание: AbiWord — текстовый процессор, который можно использовать для конвертации документов из одного формата в другой с командной строки.
Установка и использование:
- Установите AbiWord:
sudo apt install abiword
- Преобразуйте документ Word в текст:
abiword --to=txt myfile.doc
AbiWord сочетает в себе простоту использования с широким охватом поддерживаемых форматов.
3. LibreOffice
Функции: LibreOffice, знаменитый офисный пакет для Linux, предлагает командную строку для преобразования документов.
Установка и использование:
- Установите LibreOffice:
sudo apt install libreoffice
- Извлечьте текст из документа Word:
libreoffice --cat test.docx
LibreOffice позволяет извлечь текст напрямую из документов, что экономит время на конвертацию.
4. Catdoc, Antiword и другие утилиты
Catdoc: Пакет, который позволяет конвертировать документы Word в текстовый формат.
Команды:
- Для извлечения текста:
catdoc file.doc > file.txt
Antiword: Альтернатива catdoc, также конвертирующая документы Word в формат текста.
Команды:
- Извлечение текста:
antiword file.doc > file.txt
Заключение
Каждый из представленных инструментов имеет свои преимущества в зависимости от ваших конкретных требований. Apache Tika отлично подходит для комплексного анализа различных форматов, в то время как LibreOffice и AbiWord предоставляют более узкоспециализированные возможности. Выбор подходящего инструмента зависит от ваших предпочтений и специфики проекта.
Надеемся, что данное руководство поможет вам выбрать оптимальное решение для извлечения текстов из документов MS Office на платформе Linux.