本文由 发布,转载请注明出处,如有问题请联系我们! 发布时间: 2021-08-01python提取数据指定列-用python处理excel数据
加载中文中共享一个根据PDF的Python办公系统的实例解决方法,这也是一位金融业妹纸明确提出的真正要求。大家先一起来看看要求。
要求叙述
一个文件夹名称下有好几个PDF种类的税票。




要求的实质是一个识别图片难题,由于PDF中的具体内容是图片类型,不能用基本方式立即获取文字。解决方法是应用电子光学图像识别(OCR)来图片识别中的标识符。与此同时必须特别注意的是,PDF终究并不是照片。为了更好地进行OCR,除开OCR自身,还必须免费下载Ghostscript和ImageMagick开展数据转换。以Windows为例子,电子计算机上必须安裝下列三个手机软件:
Ghostscript 32 位ImageMagick 32 位tesseract-OCR 32 位三个软件的下载安裝没什么尤其的(三阶魔方配备有点儿繁杂,可是互联网上面许多实例教程,这儿也就不反复了),阅读者能够自主快速下载配备。编码表述如下所示。最先导进需要的控制模块:
fromwand.imageimportImagefromPILimportImageasPIimportpyocrimportpyocr.buildersimportioimportreimportosimportshutil请参照下列特殊控制模块采用的特殊编码。必须附加安裝Wand和pyocr,由于他们是是非非标准库。开启cmd键入:
pipinstallwandpipinstallpyocr这一要求还牵涉到连接Excel,我们可以考虑到应用openpyxl库的Workbook建立新的Excel文档:
fromopenpyxlimportWorkbook税票。要求中的pdf放到桌面。根据电脑操作系统控制模块,您能够利用下列编码获得桌面路径:
#获得桌面路径包裝成一个涵数defGetDesktopPath():returnos.path.join(os.path.expanduser("~"),'Desktop')path=GetDesktopPath() r'税票.pdf'获得已配备的宇宙魔方,便于之后启用:
tool=pyocr.get_available_tools()[0]根据法杖控制模块将PDF文件格式转换为屏幕分辨率为300的jpeg图像:
image_pdf=Image(filename=path,resolution=300)image_jpeg=image_pdf.convert('jpeg')将照片分析为二进制引流矩阵:
image_lst=[]forimginimage_jpeg.sequence:img_page=Image(image=img)image_lst.append(img_page.make_blob('jpeg'))应用IO控制模块的BytesIO方式载入照片方式的二进制內容:
new_img=PI.open(io.BytesIO(image_lst[0]))new_img.show()下面,捕获必须独立保存的一部分的字符串数组的图象,尽可能只制做图象中必须鉴别的一部分,那样解决和获得所需內容就简便易行。
最先,以总产量为例子,图象的四个主要参数。拍攝照片的剪裁((左,上,右,下))必须不断调节才可以明确。明确四个主要参数为1600 760 1830 900后,试着捕获并浏览照片:
###分析1Z开始码left=350top=600right=1300bottom=730image_obj1=new_img.crop((left,top,right,bottom))image_obj1.show()

最终,抽屉柜的鉴别。

left = 1420top = 1420right = 1700bottom = 1500image_obj3 = new_img.crop((left, top, right, bottom))# image_obj3.show()txt3 = tool.image_to_string(image_obj3)# print(txt3)left = 1420 top = 1420 right = 1700 bottom = 1500 image _ obj 3 = new _ img . crop((左,上,右,下))# image _ obj 3 . show()txt 3 = tool . image _ to _ string(image _ obj 3)# print(txt 3)

到此,大家早已取得成功鉴别出三条信息内容:总额,经营者鉴别号和出票人。随后,大家根据了解的openpyxl将他们载入Excel,并应用os模块完成批量操作。
workbook=Workbook()sheet=workbook.activeheader=['总额','经营者鉴别号','开税票人']sheet.append(header)sheet.append([txt1,txt2,txt3])workbook.save(GetDesktopPath() r'归纳.xlsx')
最终,实际上,很多好用的办公系统脚本制作都能够从这一实例中导出来,比如:
大批量测算税票额度并举取名文件夹名称依据发票种类大批量归类依据税票大批量制做付款申请单··· ···