# How to Parse Microsoft Word Document

**URL:** <https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612>\
**Category:** Rails\
**Created:** [March 16, 2011, 8:54pm UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612 "2011-03-16T20:54:30Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [March 16, 2011, 8:54pm UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/1 "2011-03-16T20:54:30Z")

</div>

Hi People,

I just joined the group and I want to ask something about my problem.  
I’m still learning Ruby on Rails and now I have a task to parse  
Microsoft Word and store the content into database.

Do you have any suggestion how to do it?

FYI, I develop it under Unix Environment. So, I don’t have a chance to  
use win32ole on it, CMIIW.

I also have searched the internet about this. But all I found that I  
need to use JRuby and combine it with Apache POI or else I need to use  
win32ole. As far as I know, to use JRuby I need to create the rails  
project also with JRuby but unfortunately I already created the  
project with plain Ruby.

So, I don’t know what to do anymore. Does anybody have clue?

Regards,

Hafiz Badrie Lubis

---

<div class="post-metadata">

**Author:** ![Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/f08c70/32.png) [@Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/u/Hafiz_Badrie_Lubis)\
**Post date:** [March 16, 2011, 9:50pm UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/2 "2011-03-16T21:50:28Z")

</div>

On Mar 16, 2011, at 2:51 PM, Hafiz Badrie Lubis wrote:

> I also have searched the internet about this. But all I found that I  
> need to use JRuby and combine it with Apache POI or else I need to use  
> win32ole. As far as I know, to use JRuby I need to create the rails  
> project also with JRuby but unfortunately I already created the  
> project with plain Ruby.
> 
> So, I don’t know what to do anymore. Does anybody have clue?

I did a project in PHP quite a few years ago, and I used some  
venerable unix cli converters to do this. I stored the files as is,  
and then used these converters to rip out their text and stored that  
in the database for searching. They aren’t perfect, but they do a good  
enough job for search results.

$translators = array(  
‘pdf’ =\> ‘/usr/local/bin/pdftotext ./pdf/%s.pdf -’,  
‘ppt’ =\> ‘/usr/local/bin/catppt -d ascii ./ppt/%s.ppt’,  
‘xls’ =\> ‘/usr/local/bin/xls2csv -d ascii ./xls/%s.xls’,  
‘doc’ =\> ‘/usr/local/bin/catdoc -d ascii ./doc/%s.doc’  
); //these translators all pipe to stdout, which means that shell\_exec  
will return their text value

Walter

---

<div class="post-metadata">

**Author:** ![Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/f08c70/32.png) [@Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/u/Hafiz_Badrie_Lubis)\
**Post date:** [March 16, 2011, 9:51pm UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/3 "2011-03-16T21:51:08Z")

</div>

On Mar 16, 2011, at 12:51 PM, Hafiz Badrie Lubis wrote:

> But all I found that I  
> need to use JRuby and combine it with Apache POI or else I need to use  
> win32ole.

You can run poi as a separate process and then grab its output.

–  
Scott R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> **[Elevated Software Development, Inc.](http://www.elevated-dev.com/)**

(303) 722-0567 voice

---

<div class="post-metadata">

**Author:** ![Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/f08c70/32.png) [@Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/u/Hafiz_Badrie_Lubis)\
**Post date:** [March 17, 2011, 3:08am UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/4 "2011-03-17T03:08:48Z")

</div>

Can you show it to me how to do it? Do you have a reference?  
To make a collaboration between a rails project with JRuby codes.

---

<div class="post-metadata">

**Author:** ![Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/f08c70/32.png) [@Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/u/Hafiz_Badrie_Lubis)\
**Post date:** [March 17, 2011, 12:12am UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/5 "2011-03-17T00:12:11Z")

</div>

1. Convert .doc to .pdf with PyODConverter  
[http://www.artofsolving.com/opensource/pyodconverter](http://www.artofsolving.com/opensource/pyodconverter)

2. Convert .pdf to .tiff with ImageMagick

3. Process .tiff through Tesseract OCR and get .txt

On Wed, Mar 16, 2011 at 9:51 PM, Hafiz Badrie Lubis

---

<div class="post-metadata">

**Author:** ![Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/f08c70/32.png) [@Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/u/Hafiz_Badrie_Lubis)\
**Post date:** [March 17, 2011, 5:48am UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/6 "2011-03-17T05:48:45Z")

</div>

On Mar 16, 2011, at 5:10 PM, Vladimir R. wrote:

> 1. Convert .doc to .pdf with PyODConverter  
> [http://www.artofsolving.com/opensource/pyodconverter](http://www.artofsolving.com/opensource/pyodconverter)
> 
> 2. Convert .pdf to .tiff with ImageMagick
> 
> 3. Process .tiff through Tesseract OCR and get .txt

Wow, talk about a long slow way to potentially lose text flow and  
introduce errors…

–  
Scott R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> **[Elevated Software Development, Inc.](http://www.elevated-dev.com/)**

(303) 722-0567 voice

---

<div class="post-metadata">

**Author:** ![Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/f08c70/32.png) [@Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/u/Hafiz_Badrie_Lubis)\
**Post date:** [March 17, 2011, 6:00am UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/7 "2011-03-17T06:00:35Z")

</div>

Ok thank you, Scott.  
I’ll try your advice.

---

<div class="post-metadata">

**Author:** ![Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/f08c70/32.png) [@Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/u/Hafiz_Badrie_Lubis)\
**Post date:** [March 17, 2011, 10:59am UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/8 "2011-03-17T10:59:02Z")

</div>

I’m coming to this late and I’ve partially deleted the thread, so I may  
be way off base…

An old plugin might be of help:

> **[GitHub - kete/convert\_attachment\_to: A plugin that will take the value of an...](https://github.com/kete/convert_attachment_to)**
>
> A plugin that will take the value of an uploaded file, convert it to either text or HTML, and insert it into specified attribute. Only works with PDF, MS Word, HTML, and plain text documents curren...

It makes use of existing command line converter utility programs.

Cheers,  
Walter

---

<div class="post-metadata">

**Author:** ![Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/f08c70/32.png) [@Hafiz\_Badrie\_Lubis](https://www.ruby-forum.com/u/Hafiz_Badrie_Lubis)\
**Post date:** [March 17, 2011, 5:56am UTC](https://www.ruby-forum.com/t/how-to-parse-microsoft-word-document/204612/9 "2011-03-17T05:56:14Z")

</div>

On Mar 16, 2011, at 8:06 PM, Hafiz Badrie Lubis wrote:

> To make a collaboration between a rails project with JRuby codes.

It has nothing whatsoever to do with JRuby. You can run Java apps from  
Ruby exactly like any other command-line process. I don’t know if POI is  
just a library, or has a full app utility as well. If it’s just a lib,  
you’d have to write the program, probably a half-dozen lines of Java.

–  
Scott R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> **[Elevated Software Development, Inc.](http://www.elevated-dev.com/)**

(303) 722-0567 voice
