18

I need a way to extract the text from all of the MS Office document types (Word, Excel, Powerpoint), in Linux. I envision that there might be several different approaches to accomplish this, such as a Bash or Python script, or converting them to PDF and then extracting the text using a tool such as pdftotext.

This seems like it might be a commonplace requirement. Is there an established procedure or tool to accomplish this easily?

9 Answers 9

16

Catdoc can convert doc,xls & ppt to text. Second option would be wvWare.

For more utils check check http://www.linux.com/archive/articles/52385 for word to text coverters and

5
  • Catdoc! Thats the thing i am looking for! Will it also work for ODF ? Jul 22, 2010 at 4:38
  • Just googled & got stosberg.net/odt2txt. never tried it, seems like it does the job.
    – nahar
    Jul 22, 2010 at 5:27
  • cool thanks. catdoc is ok but it cant convert xls,ppt to test , i use xls2csv and apache-tika for them. check them out! Oct 30, 2010 at 21:37
  • @nahar, odt2txt only works on odt format, not ms doc.
    – Allen
    Jan 9, 2013 at 6:28
  • 1
    great, catdoc gives me segmentation fault
    – fotanus
    Jul 30, 2014 at 21:11
9

I finally found the perfect tool for scripting document parsing , it is apache-tika , it can parse gazillion non-text formats into text which is very cool!

Get Apache Tika here:

http://tika.apache.org/

(Mac Homebrew users: brew install tika)

The command-line interface works like this:

tika --text something.docx > something.txt

2
  • +1: Apache Tika is a serious Open source project, works also in Windows, works from the command line, it has a GUI with drag and drop, opens anything (Word, Excel, PowerPoint, PDF, svg), extracts the metadata of the document as well. After trying most the tools above, Apache Tika is what I was looking for. This should be the accepted answer (I don't know if you can accept your own answer) Oct 20, 2015 at 12:04
  • 2
    did , shamelessly ... :D Oct 22, 2015 at 15:58
8

Abiword can convert from the commandline between any file formats it knows.

Convert from Word to plain text:

abiword --to=txt myfile.doc

Make a pdf from a Word file:

abiword --to=pdf myfile.doc

And so on. The results in these cases would be myfile.txt or myfile.pdf. If you want to specify the output name you can do that too:

abiword --to=txt --to-name=output.txt myfile.doc

Convert ODT to Word:

abiword --to=doc myfile.odt

Convert Word to ODT:

abiword --to=odt myfile.doc

In fairness to other answers, it should be noted that AbiWord uses wvWare to handle Word documents, but even the wvWare homepage recommends using AbiWord instead for most conversions.

I hate word processors. This is the main reason I have AbiWord installed.

You might also be interested in unoconv, which is a similar tool supporting formats OpenOffice knows (which would include spreadsheets and the like), but I have no experience with it personally.

1
  • For .docx document it mess up :S But a nice solution for .doc
    – Warface
    Apr 3, 2014 at 13:20
4

With LibreOffice you can do:

libreoffice --invisible --convert-to pdf file1.ppt file2.ppt
1
  • 4
    You can use the Text filter to convert to txt: libreoffice --invisible --convert-to txt:Text files
    – Gagaro
    Apr 23, 2014 at 8:57
0

You could use CUPS ( virtual printer ) and by using ld.

1
  • Interesting , can that convert any printable stuff to PDF? Can you point me and example doing that for Doc or Xls? Jul 22, 2010 at 4:40
0

wv is one option and IIRC OpenOffice can be told from the command line to export as pdf and exit.

1
  • unoconv seems to be the OpenOffice-related tool I couldn't remember.
    – ptman
    Oct 23, 2010 at 11:21
0

If you want to use Apache Tika in a Python project, please check out this blog post.

-1

Docsplit is the perfect tool to extract the text from pdf. It's a ruby gem. So you should install the ruby and gem in your linux system before using the docsplit command.

If your system didn't have the ruby and gem, please follow the instruction.

You must be root to install the software (assuming you want it to be available to all users).

Install the ruby on linux : yum install ruby
Install the gem, please download the latest gem package, then follow the instruction

tar xzf rubygems-x.x.xx.tgz
cd rubygems-x.x.xx
ruby setup.rb

Now that RubyGems is installed, you should have the gem command (gem is the command used to interact with the RubyGems package system). Test it out by running:

gem list

Now, move to next step, to install the docsplit gem, please goto the following site. http://documentcloud.github.com/docsplit/

1
  • This is the exact opposite of what the OP asked for.
    – CarlF
    Aug 15, 2011 at 12:54
-1

1.doc catdoc or antiword for doc files to convert you can use the following command catdoc file.doc > file or antiword file.doc > file

  1. docx docx2txt

  2. pdf emacs file.pdf ctrl-x ctrl-s file

1
  • 1
    (1) Catdoc was proposed in an answer that was posted within an hour of the question, almost three years ago. Why are you repeating it? (2) Where can antiword be obtained? (3) What does the bottom half of your answer mean? Apr 15, 2013 at 17:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .