Как извлечь текст из документов MS Office в Linux?

Вопрос или проблема

Мне нужен способ извлечения текста из всех типов документов 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 здесь:

http://tika.apache.org/

(Пользователи 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

Связано: Как извлечь текст из документов MS Office в Linux?

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

  1. docx
    docx2txt

  2. 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.

Оцените материал
Добавить комментарий

Капча загружается...