如何在Linux系统中利用node.js提取Word及PDF文本内容的案例介绍

这篇文章主要给大家介绍了关于linux系统中利用node.js提取word(doc/docx)及pdf文本的内容,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面跟着小编来一起看看吧。

前言

想要做全文搜索引擎,则需要将word/pdf等文档内容提取出来。对于pdf有xpdf等一些开源方案。

但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 &amp; 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</string></string></string></string></fp></int></int></int></int></fp></int></int></text-file></pdf-file>

测试一下:

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> Adobe PDF output    -p <paper> 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</level></width></mapping></dtd></paper></paper>

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.docxwordnode.js.xml 文件即可。

总结

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享