国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > 进阶PDF,就用Python(pdfminer.six和pdfplumber??椋?/a>

进阶PDF,就用Python(pdfminer.six和pdfplumber??椋?/p>

十进制

头像

2020-10-27 17:57:3815165浏览 · 0收藏 · 0评论

继上篇讲过PDF中的PyPDF2??楹?,本篇为大家带来pdfminer.sixpdfplumber模块的详细讲解。


pdfminer.six


PDFMiner的操作门槛比较高,需要部分了解PDF的文档结构模型,适合定制开发复杂的内容处理工具。

平时直接用PDFMiner比较少,这里只演示基本的文档内容操作:


import pathlib from pdfminer.pdfparser import PDFParser from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfpage import PDFPage from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter from pdfminer.pdfdevice import PDFDevice from pdfminer.layout import LAParams, LTTextBox, LTFigure, LTImage from pdfminer.converter import PDFPageAggregator path = list(pathlib.Path.cwd().parents)[1].joinpath('data/automate/002pdf') f_path = path.joinpath('2020-新冠肺炎疫情对中国连锁餐饮行业的影响调研报告-中国连锁经营协会.pdf') with open(f_path, 'rb') as f:    parser = PDFParser(f)    doc = PDFDocument(parser)    rsrcmgr = PDFResourceManager()    laparams = LAParams()    device = PDFPageAggregator(rsrcmgr, laparams=laparams)    interpreter = PDFPageInterpreter(rsrcmgr, device)    for page in PDFPage.create_pages(doc):        interpreter.process_page(page)        layout = device.get_result()        for x in layout:            # 获取文本对象            if isinstance(x, LTTextBox):                print(x.get_text().strip())            # 获取图片对象            if isinstance(x,LTImage):                print('这里获取到一张图片')            # 获取 figure 对象            if isinstance(x,LTFigure):                print('这里获取到一个 figure 对象')


虽然pdfminer使用门槛较高,但遇到复杂情况,最后还得用它。目前开源模块中,它对PDF的支持应该是最全的了。

下面这个pdfplumber就是基于pdfminer.six开发的模块,降低了使用门槛。


pdfplumber


相比pdfminer.six,pdfplumber提供了更便捷的PDF内容抽取接口。

日常工作中常用的操作,比如:

  • 提取PDF内容,保存到txt文件

  • 提取PDF中的表格到Excel

  • 提取PDF中的图片

  • 提取PDF中的图表


提取PDF内容,保存到txt文件


import pathlib import pdfplumber path = list(pathlib.Path.cwd().parents)[1].joinpath('data/automate/002pdf') f_path = path.joinpath('2020-新冠肺炎疫情对中国连锁餐饮行业的影响调研报告-中国连锁经营协会.pdf') out_path = path.joinpath('002pdf_out.txt') with pdfplumber.open(f_path) as pdf, open(out_path ,'a') as txt:    for page in pdf.pages:        textdata = page.extract_text()        txt.write(textdata)


提取PDF中的表格到Excel


import pathlib import pdfplumber from openpyxl import Workbook path = list(pathlib.Path.cwd().parents)[1].joinpath('data/automate/002pdf') f_path = path.joinpath('2020-新冠肺炎疫情对中国连锁餐饮行业的影响调研报告-中国连锁经营协会.pdf') out_path = path.joinpath('002pdf_excel.xlsx') wb = Workbook() sheet = wb.active with pdfplumber.open(f_path) as pdf:    for i in range(19, 22):        page = pdf.pages[i]        table = page.extract_table()        for row in table:            sheet.append(row) wb.save(out_path)


上面用到了openpyxl的功能创建了一个Excel文件,之前有单独文章介绍它。


提取PDF中的图片


import pathlib import pdfplumber from PIL import Image path = list(pathlib.Path.cwd().parents)[1].joinpath('data/automate/002pdf') f_path = path.joinpath('2020-疫情影响下的中国社区趋势研究-艾瑞.pdf') out_path = path.joinpath('002pdf_images.png') with pdfplumber.open(f_path) as pdf, open(out_path, 'wb') as fout:    page = pdf.pages[10]    # for img in page.images:    im = page.to_image()    im.save(out_path, format='PNG')    imgs = page.images    for i, img in enumerate(imgs):        size = img['width'], img['height']        data = img['stream'].get_data()        out_path = path.joinpath(f'002pdf_images_{i}.png')        with open(out_path, 'wb') as fimg_out:            fimg_out.write(data)


上面用到了PIL(Pillow)的功能处理图片。


提取PDF中的图表


图表与图像不同,指的是类似直方图、饼图之类的数据生成图。


import pathlib import pdfplumber from PIL import Image path = list(pathlib.Path.cwd().parents)[1].joinpath('data/automate/002pdf') f_path = path.joinpath('2020-新冠肺炎疫情对中国连锁餐饮行业的影响调研报告-中国连锁经营协会.pdf') out_path = path.joinpath('002pdf_figures.png') with pdfplumber.open(f_path) as pdf, open(out_path, 'wb') as fout:    page = pdf.pages[7]    im = page.to_image()    im.save(out_path, format='PNG')    figures = page.figures    for i, fig in enumerate(figures):        size = fig['width'], fig['height']        crop = page.crop((fig['x0'], fig['top'], fig['x1'], fig['bottom']))        img_crop = crop.to_image()        out_path = path.joinpath(f'002pdf_figures_{i}.png')        img_crop.save(out_path, format='png')    im.draw_rects(page.extract_words(), stroke='yellow')    im.draw_rects(page.images, stroke='blue')    im.draw_rects(page.figures) im # show in notebook


另外需要说明的是,PDF标准规范由Adobe公司主导。

平时我们不需要参考规范,但如果遇到一些较复杂的场景,尤其是??槊挥兄苯又С?,就只能硬着头皮翻阅文档了。文档是公开的,可以去搜索引擎搜索关键词:pdf_reference_1-7.pdf


今天的分享到这里就结束了,希望能让大家对使用PDF有了更多的理解和运用。更多Python学习,就在PyThon学习网教学中心。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

腹肌体育生导管网站| 父女一起到达巅峰的小说| 《初尝禁果》2:做爰电影| 公翁晚上吃我奶头子| 50多岁熟妇泻火原因处理方法| 妈妈的朋友9| 《熟妇的荡欲》HD中字| 妻子的秘密在线观看免费全集| 《年轻朋友的妻子3》| 女性无裆连体内衣| 日产精品一线二线三线芒果| 《一滴都不许漏》何泽城林荫| 小柔与王叔的第一次相遇是第几集| 石头剪刀布谁输了看隐私| 3DMAX视频成品免费入口| 双乳压在落地窗前做H| 女人大阴屑夹缝是阴虚还是阳虚| 免费网站在线观看大全电视剧| 大叔和妈妈免费观看电视剧第3集| 双男主做酱酱酿酿视频大全真人版| 办公室深深挺进女警小沈| 罗明珠| 别拔出来 就弄里面吧| 日本M码和欧洲码的区别A S| 国产免费观看高清电视剧在线观看| 少女吃春晚药第1集免费观看| 第1章品尝朋友娇妻| 真人刺激战场40分钟电视剧| 人狗大战2免费观看正版| YSL水蜜桃86满十八岁会黑吗..| 欧美大片免费PPT| 欧美大片免费PPT| 国产偷窥熟妇高潮呻吟视频AV| 日本动浸扑克牌动画片MV| 露胸的衣服| 宝宝扶着水池乖乖让爸爸洗头文| 美国A片巜禁忌5| 《喂奶人妻厨房HD》| 老师穿白色双开真丝旗袍怎么穿 | 村长撕开乳罩吸奶头在线观看 | 换着玩人妻HD中文字幕