想要做全文搜索引擎,则需要将word/pdf等文档内容提取出来。对于pdf有xpdf等一些开源方案。
但Word文档的情况则会复杂一些。
然后在node.js中使用 child_process直接调用此命令即可,pdftotext会将内容输出以文本文件中,可能需要多一些操作。具体代码略。
我们这里使用了 antiword 开源软件,来提取word2003以前版本的内容,安装同样非常简单:
antiword直接将word内容输出到了console中:
但Word文档的情况则会复杂一些。
提取PDF文本内容
XPDF是一个免费开源的软件,用于显示PDF文件,并可将pdf转换成文字图片等,同样支持Windows版。在Debian Linux上安装非常简单:apt-get install xpdf我们这里只使用pdftotext这个功能,直接输入可查看帮助:
root@raspberrypi:/var/www# pdftotext
pdftotext version 0.26.5
Copyright 2005-2014 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
Usage: 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.txt
root@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.doc
SYNC Mobile – Ford APA
Project Number: DFYST
Requirements 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 等。
上述两个项目,略显复杂,我们也可以直接使用 unzip 模块,来提取docx/ xlst/ pptx 等存放内容的文件。请参考:
node.js使用unzip解压zip包指定文件,提取word/excel(docx/pptx/xlsx)文本内容
上述两个项目,略显复杂,我们也可以直接使用 unzip 模块,来提取docx/ xlst/ pptx 等存放内容的文件。请参考:
node.js使用unzip解压zip包指定文件,提取word/excel(docx/pptx/xlsx)文本内容
回复 (0)
微信扫码 立即评论