最近一段時間做特定的業務場景,目標數據是PDF中的barcode,經過一段時間的工作,整理信息如下:
1、閱讀、解密PDF
(1)Python自帶的工具PyPDF3
Python開發的,在PyPDF2基礎上做了升級,說明文檔還是PyPDF2的(https://pythonhosted.org/PyPDF2/)
可以讀取大多數的PDF文件,判斷頁數、是否加密等,但在解密部分PDF文件時會拋異常無法工作,所以只能做爲基礎的PDF工具使用。
(2)qpdf
基於C++開發的工具,功能比較強大,PyPDF3無法搞定的解密文件,qpdf(http://qpdf.sourceforge.net/)很輕鬆就搞定了,使用起來得心應手。
(3)pikepdf
它在qpdf(https://pikepdf.readthedocs.io/en/latest/index.html#))基礎上做了封裝,功能強大,更方便使用。
2、PDF中barcode的解析
使用了2個方法
(1)將PDF轉爲txt文件
主要使用pdf2txt.py工具,該工具可以將文本類的PDF文件轉爲txt,工具github地址:https://github.com/euske/pdfminer
該工具也可將PDF轉爲圖片等;
(2)使用imagemagick
需要另外安裝wand、zbar,主要功能是將PDF文件轉爲image,然後使用掃描功能從圖片中提取二維碼;
不同系統安裝過程不同,安裝過程比較複雜和曲折,整理的信息如下,供參考:
(2.1)redhat/centos os
安裝imagemagick
yum update
yum install ImageMagick ImageMagick-devel
安裝zbar
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install zbar
(2.2)ubuntu os
安裝wand
$ sudo apt-get install libmagickwand-dev
$ sudo apt-get install libmagickcore5-extra
安裝ImageMagick
https://imagemagick.org/script/download.php
ImageMagick.tar.gz
解壓二進制包安裝
安裝zbar
# tar xf zbar-0.10.tar.gz
# cd zbar-0.10/
# sudo ln -s /usr/local/include/ImageMagick-7 /usr/local/include/ImageMagick
# sudo ln -s /usr/local/include/ImageMagick-7/MagickWand /usr/local/include/wand
# export CFLAGS=""
# ./configure --disable-video --without-gtk --without-qt --without-python
# make
# sudo make install
# sudo ldconfig /user/local/lib
# zbarimg --version
(2.3)mac os
$ brew install gs
$ brew install imagemagick