Linux系統中利用node.js提取Word(doc/docx)及PDF文本的內容,node.jsdocx

來源:互聯網
上載者:User

Linux系統中利用node.js提取Word(doc/docx)及PDF文本的內容,node.jsdocx

前言

想要做全文檢索搜尋引擎,則需要將word/pdf等文檔內容提取出來。對於pdf有xpdf等一些開源方案。

但Word文檔的情況則會複雜一些。

提取PDF常值內容

XPDF是一個免費開源的軟體,用於顯示PDF檔案,並可將pdf轉換成文字圖片等,同樣支援Windows版。在Debian Linux上安裝非常簡單:

apt-get install xpdf

我們這裡只使用pdftotext這個功能,直接輸入可查看協助:

root@raspberrypi:/var/www# pdftotextpdftotext version 0.26.5Copyright 2005-2014 The Poppler Developers - http://poppler.freedesktop.orgCopyright 1996-2011 Glyph & Cog, LLCUsage: pdftotext [options] <PDF-file> [<text-file>] -f <int>   : first page to convert -l <int>   : last page to convert -r <fp>   : resolution, in DPI (default is 72) -x <int>   : x-coordinate of the crop area top left corner -y <int>   : y-coordinate of the crop area top left corner -W <int>   : width of crop area in pixels (default is 0) -H <int>   : height of crop area in pixels (default is 0) -layout   : maintain original physical layout -fixed <fp>  : assume fixed-pitch (or tabular) text -raw    : keep strings in content stream order -htmlmeta   : generate a simple HTML file, including the meta information -enc <string>  : output text encoding name -listenc   : list available encodings -eol <string>  : output end-of-line convention (unix, dos, or mac) -nopgbrk   : don't insert page breaks between pages -bbox    : output bounding box for each word and page size to html. Sets -htmlmeta -opw <string>  : owner password (for encrypted files) -upw <string>  : user password (for encrypted files) -q    : don't print any messages or errors -v    : print copyright and version info -h    : print usage information -help    : print usage information --help   : print usage information -?    : print usage information

測試一下:

root@raspberrypi:/var/www# pdftotext onceai.pdf onceai.txtroot@raspberrypi:/var/www# cat onceai.txt 產品介紹 頑石智能科技(上海)有限公司....

然後在node.js中使用 child_process直接調用此命令即可,pdftotext會將內容輸出以文字檔中,可能需要多一些操作。具體代碼略。

用antiword提取 .doc 的內容

我們這裡使用了 antiword 開源軟體,來提取word2003以前版本的內容,安裝同樣非常簡單:

apt-get install antiword

查看協助:

root@raspberrypi:/var/www# antiword Name: antiword Purpose: Display MS-Word files Author: (C) 1998-2005 Adri van Os Version: 0.37 (21 Oct 2005) Status: GNU General Public License Usage: antiword [switches] wordfile1 [wordfile2 ...] Switches: [-f|-t|-a papersize|-p papersize|-x dtd][-m mapping][-w #][-i #][-Ls]  -f formatted text output  -t text output (default)  -a <paper size name> Adobe PDF output  -p <paper size name> PostScript output   paper size like: a4, letter or legal  -x <dtd> XML output   like: db (DocBook)  -m <mapping> character mapping file  -w <width> in characters of text output  -i <level> image level (PostScript only)  -L use landscape mode (PostScript only)  -r Show removed text  -s Show hidden (by Word) text

antiword直接將word內容輸出到了console中:

root@raspberrypi:/var/www# antiword spec.docSYNC Mobile – Ford APAProject Number: DFYSTRequirements Specification

同樣在node.js用child_process調用此命令即可。

解析提取.docx 的內容

對於 docx 文檔來說,因基本身就是一個zip檔案,只需要在node.js先將其解壓,再解析 text.docx\word\document.xml 檔案即可。

Github上也有些將docx解析成html的庫,

如:

https://github.com/mwilliamson/mammoth.js 

https://github.com/lalalic/docx2html 

等。

總結

以上就是這文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的協助,如有疑問大家可以留言交流,謝謝大家對幫客之家的支援。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.