Кто-нибудь знает что-нибудь, что они могут порекомендовать, чтобы извлечь только простой текст из .doc
или .docx
?
Я нашел это - интересно, были ли еще какие-нибудь предложения?
Кто-нибудь знает что-нибудь, что они могут порекомендовать, чтобы извлечь только простой текст из .doc
или .docx
?
Я нашел это - интересно, были ли еще какие-нибудь предложения?
Если вам нужен чистый текст (мое требование), вам нужно всего
unzip -p some.docx word/document.xml | sed -e 's/<[^>]\{1,\}>//g; s/[^[:print:]]\{1,\}//g'
Что я нашел в командной строке fu
Он распаковывает файл docx и получает фактический документ, затем разбивает все теги xml. Очевидно, что все форматирование потеряно.
Одним из вариантов является libreoffice/openoffice в режиме без заголовка (сначала убедитесь, что все остальные экземпляры libreoffice закрыты):
libreoffice --headless --convert-to "txt:Text (encoded):UTF8" mydocument.doc
Для получения дополнительной информации см., Например, эту ссылку: http://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/
Список фильтров libreoffice см. По адресу http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/config/fragments/filters.
Поскольку синтаксис командной строки openoffice слишком сложен, есть удобная оболочка, которая может упростить процесс: unoconv.
Другой вариант - Apache POI - хорошо поддерживаемая библиотека Java, которая, в отличие от antiword, может читать, создавать и конвертировать файлы .doc
, .docx
, .xls
, .xlsx
, .ppt
, .pptx
.
Вот самый простой из возможных код Java для преобразования документа .doc
или .docx
в простой текст:
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import org.apache.poi.POITextExtractor;
import org.apache.poi.extractor.ExtractorFactory;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.xmlbeans.XmlException;
public class WordToTextConverter {
public static void main(String[] args) {
try {
convertWordToText(args[0], args[1]);
} catch (ArrayIndexOutOfBoundsException aiobe) {
System.out.println("Usage: java WordToTextConverter <word_file> <text_file>");
}
}
public static void convertWordToText(String src, String desc) {
try {
FileInputStream fs = new FileInputStream(src);
final POITextExtractor extractor = ExtractorFactory.createExtractor(fs);
FileWriter fw = new FileWriter(desc);
fw.write(extractor.getText());
fw.flush();
fs.close();
fw.close();
} catch (IOException | OpenXML4JException | XmlException e) {
e.printStackTrace();
}
}
}
# Maven dependencies (pom.xml):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.wordconv</groupId>
<artifactId>my.wordconv.converter</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.17</version>
</dependency>
</dependencies>
</project>
docx2txt
упакован для Debian.
Моим любимым является antiword:
И вот аналогичный проект, который утверждает поддержку docx:
Попробуйте Apache Tika. Он поддерживает большинство форматов документов (каждый формат Office, форматы OpenOffice/LibreOffice, PDF и т.д.) С использованием Java-библиотек (среди прочих, Apache POI). Это очень простое использование:
java -jar tika-app-1.4.jar --text ./my-document.doc
Я считаю, что wv лучше, чем catdoc или antiword. Он может иметь дело с .docx и конвертировать в текст или HTML. Вот функция, которую я добавил в свой .bashrc для временного просмотра файла в терминале. Измените это как требуется.
# open word in less (ie worl document.doc)
worl() {
DOC=$(mktemp /tmp/output.XXXXXXXXXX)
wvText $1 $DOC
less $DOC
rm $DOC
}
Для docx, как насчет http://libopc.codeplex.com/
Недавно я столкнулся с этой проблемой и обнаружил, что инструменты командной строки OpenOffice/LibreOffice ненадежны в производстве (тысячи обработанных документов, десятки одновременно).
В конце концов, я построил облегченную упаковку DocRipper, которая намного быстрее и захватывает весь текст из .doc,.docx и .pdf без форматирования. DocRipper использует Antiword, grep и pdftotext для захвата текста и возврата его.