pymupdf官方文档:https://pymupdf.readthedocs.io/en/latest/textpage.html#TextPage.extractDICT
代码:

# 证书  留学背景  工作时间
import base64
import json
import os
import reimport xlwtbase_211 = ['北京理工大学', '北京航空航天大学', '北京化工大学', '北京邮电大学', '对外经济贸易大学', '中国传媒大学', '中央民族大学', '中国矿业大学','中央财经大学', '中国政法大学', '中国石油大学', '中央音乐学院', '北京体育大学', '北京外国语大学', '北京交通大学', '北京科技大学','北京林业大学', '中国农业大学', '北京中医药大学', '华北电力大学', '北京师范大学', '中国地质大学', '清华大学', '北京大学', '中国人民大学','北京工业大学', '复旦大学', '华东师范大学', '上海外国语大学', '上海大学', '同济大学', '华东理工大学', '东华大学', '上海财经大学', '上海交通大学', '南开大学', '天津大学', '天津医科大学', '河北工业大学', '重庆大学', '西南大学', '华北电力大学', '太原理工大学', '内蒙古大学', '大连理工大学', '东北大学','辽宁大学','大连海事大学', '吉林大学','东北师范大学', '延边大学', '东北农业大学', '东北林业大学', '哈尔滨工业大学', '哈尔滨工程大学', '南京大学', '东南大学', '苏州大学','河海大学', '中国药科大学', '中国矿业大学(徐州)', '南京师范大学', '南京理工大学', '南京航空航天大学', '江南大学','南京农业大学浙江大学安徽大学', '合肥工业大学', '中国科学技术大学厦门大学', '福州大学南昌大学山东大学', '中国海洋大学','中国石油大学(华东)', '郑州大学', '武汉大学', '华中科技大学', '中国地质大学(武汉)', '华中师范大学', '华中农业大学','中南财经政法大学', '武汉理工大学', '湖南大学', '中南大学', '湖南师范大学', '中山大学', '暨南大学', '华南理工大学', '华南师范大学','广西大学', '四川大学', '西南交通大学', '电子科技大学', '西南财经大学', '四川农业大学', '云南大学', '贵州大学', '西北大学','西安交通大学', '西北工业大学', '陕西师范大学', '西北农林科大','西安电子科技大学','长安大学','兰州大学', '新疆大学','石河子大学', '海南大学', '宁夏大学', '青海大学', '西藏大学', '第二军医大学','第四军医大学', '国防科学技术大学', ]base_985 = ['清华大学', '北京大学', '厦门大学', '中国科学技术大学', '南京大学', '复旦大学', '天津大学', '哈尔滨工业大学', '浙江大学', '南开大学', '西安交通大学', '华中科技大学','东南大学', '武汉大学', '上海交通大学', '中国海洋大学', '山东大学', '湖南大学', '中国人民大学', '北京理工大学', '吉林大学', '重庆大学', '电子科技大学', '大连理工大学','四川大学', '中山大学', '华南理工大学', '北京航空航天大学', '兰州大学', '东北大学', '西北工业大学', '北京师范大学', '同济大学', '中南大学', '中国农业大学','国防科技大学', '西北农林科技大学', '华东师范大学']
import fitzdef pdf_img(path):doc = fitz.open(path)# pdf中图片的正则表达式checkXO = r"/Type(?= */XObject)"checkIM = r"/Subtype(?= */Image)"# 21是找出的固定的某个图片的pdf位置idtext = doc._getXrefString(21)isXObject = re.search(checkXO, text)# 使用正则表达式查看是否是图片isImage = re.search(checkIM, text)# 如果不是对象也不是图片,不做处理if not isXObject or not isImage:passelse:# 根据位置索引生成图像pix = fitz.Pixmap(doc, 21)# 根据pdf的路径生成图片的名称save_path = path.replace('.pdf','.png')# 如果pix.n<5,可以直接存为PNGif pix.n < 5:pix.writePNG(save_path)# 否则先转换CMYKelse:pix0 = fitz.Pixmap(fitz.csRGB, pix)pix0.writePNG(save_path)pix0 = None# 释放资源pix = Nonedef pdf_text(path):doc = fitz.open(path)# print(doc)lenXREF = doc._getXrefLength()req_text = []for page in doc:blocks = page.getText('dict').get("blocks")# print(len(blocks))for i in blocks:if i.get('type') == 0:lines = i.get("lines")if len(lines) == 1:spans = lines[0].get('spans')if len(spans) == 1:req_text.append(spans[0].get("text"))else:for j in lines:spans = j.get('spans')if len(spans) == 1:req_text.append(spans[0].get('text'))else:for k in spans:req_text.append(k.get("text"))# print(req_text)jianli_ID = []ry = []shulian = []jt = []gs = []xw = []gztime = []xm = []jy = []zs = []by = []ld = []for i in range(0, len(req_text) - 1):if req_text[i] == "学\u3000校:":xx = req_text[i + 1]if xx in base_211 and xx in base_985:by.append("毕业于: %s 985和211院校 " % xx)elif xx in base_211:by.append("毕业于: %s  211院校" % xx)elif xx in base_985:by.append("毕业于: %s  985院校" % xx)else:by.append("毕业于: %s " % xx)elif req_text[i] == "证书":zs.append("证书:%s  %s" % (req_text[i + 1], req_text[i + 2]))elif req_text[i] == "公\u3000司:":gs.append("公司:%s" % req_text[i + 1])elif req_text[i] == "学位:":xw.append("学位: %s" % req_text[i + 1])elif req_text[i] == "工作经验":gztime.append("最近一段工作时间: %s %s" % (req_text[i + 1], req_text[i + 2]))elif req_text[i] == "熟练":shulian.append("熟练: %s" % req_text[i - 1])elif req_text[i] == "精通":jt.append("精通:%s" % req_text[i - 1])elif req_text[i] == "教育经历":jy.append("教育经历:%s %s" % (req_text[i + 1], req_text[i + 2]))elif req_text[i] == "项目经验":xm.append("项目经验:%s %s %s" % (req_text[i + 1], req_text[i + 2], req_text[i + 3]))elif req_text[i] == "校内荣誉":ry.append("校内荣誉:%s  %s%s%s%s%s " % (req_text[i + 1], req_text[i + 2], req_text[i + 3], req_text[i + 4], req_text[i + 5], req_text[i + 6]))elif req_text[i] == "ID":jianli_ID.append("简历ID: %s" % req_text[i + 2])ld.append(jianli_ID[0])ld.extend(by)ld.extend(xw)ld.extend(jy)if len(zs) >= 1:ld.extend(zs)else:ld.append([])if len(ry) >= 1:ld.extend(ry)else:ld.append([])ld.extend(gs)ld.extend(xm)ld.extend(shulian[:3])ld.extend(jt)return ld# pdf_text('D:/51job/_2020-09-21_141211/806152512.pdf')def data_write(write_path, datas):f = xlwt.Workbook()sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)  # 创建sheet# 将数据写入第 i 行,第 j 列i = 0for data in datas:for j in range(len(data)):sheet1.write(i, j, data[j])j += 1i += 1f.save(write_path)  # 保存文件def main(file_dir, write_path):filenames = []datas = []for root, dirs, files in os.walk(file_dir):for file in files:if file.split('.')[-1] in ['pdf']:filenames.append(file)for filename in filenames:datas.append(pdf_text(file_dir + filename))pdf_img(file_dir+filename)data_write(write_path, datas)if __name__ == '__main__':file_dir = "D:\\51job\\python_2020-09-22_095655\\"write_path = file_dir + "jx.xlsx"main(file_dir, write_path)

python解析pdf文件_抽img_text(pymupdf)相关推荐

  1. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  2. python解析pdf文件

    加载pdf文件,获取pdf的每一页对象: import pdfplumber path = "" with pdfplumber.open(path) as pdf_obj:pag ...

  3. python处理pdf文件_好玩的Python 篇一:用Python显示和处理PDF文件

    好玩的Python 篇一:用Python显示和处理PDF文件 2020-05-25 00:20:30 0点赞 0收藏 0评论 pdf是电子书,文档经常会用的格式,除了下载各种阅读器以外,我们也可以用P ...

  4. python 解析pb文件_利用Python解析json文件

    写在前面 在金融风控领域,我们经常会使用到json格式的数据,例如运营商数据.第三方数据等.而这些数据往往不能直接作为结构化数据进行分析和建模.本文将介绍一种简单的.可复用性高的基于pandas的方法 ...

  5. python 打开pdf文件_用Python开发的简易PDF阅读器

    主要的库 PyQt5:UI的开发 fitz:与pdf文件相关的操作几乎都用的是它 这是一个用Python开发的pdf阅读器,是软A项目的附加软件(虽然现在主程序几乎可以说还没有开始:joy:,只完成了 ...

  6. python解析sql文件_如何从Python中解析sql文件?

    是否有任何方法可以从Python中执行.SQL文件中的某些SQL命令,而不是文件中的所有SQL命令?假设我有以下.sql文件:DROP TABLE IF EXISTS `tableA`; CREATE ...

  7. python解析java文件_读取java文件

    JAVA通信编程(二)--如何读取java的properties配置文件(插播) 如何读取java的properties配置文件本不属于java通讯编程这个系列的范畴,但是在做一些应用中编写通讯编程需 ...

  8. python 解析pb文件_将tensorflow模型打包成PB文件及PB文件读取方式

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. 如何用python修改pdf内容_如何利用python将pdf文件转化为txt文件?

    https://www.wukong.com/answer/6579491774144708872/?iid=15906422033&app=news_article&share_an ...

最新文章

  1. c++标准库 及 命名空间std
  2. 20175203 2018-2019 实验五《网络编程与安全》
  3. 西门子scl语言和c语言,西门子SCL语言编程学习心得
  4. 比特币现金价格周分析看点:仍维持在1000美元以上的正面区间
  5. sql在线模拟器_力荐一款在线SQL模拟器
  6. mybatis plus 事务管理器_[MyBatis]-02 环境搭建及配置文件详解
  7. CDN调试—Debug Headers
  8. MySQL数据库安全配置
  9. 云图说|初识云数据库GaussDB(for Redis)
  10. 一键还原系统(自我笔记)
  11. nginx 正向代理_看这篇彻底认识Nginx!
  12. 如何打开*.caa文件?
  13. jQuery知识点学习整理
  14. java读取properties文件连接数据库
  15. 小说阅读APP开发定制搭建方案
  16. 网络和计算机加密驱动,如何解决笔记本电脑连接不上加密无线网络的问题
  17. win10笔记本 CMD命令直接开启热点(WIFI)
  18. Amap【高德】/Google-开发,无人机航迹规划演示
  19. Windows10系统如何多开微信程序(上班划水必备)
  20. 火狐插件restclient发送post请求

热门文章

  1. 靠谱的IT人力外包企业有哪些?
  2. Java声母_声母r是浊擦音,n是浊鼻音,l是浊边音
  3. com.sec.android.ofviewer是什么,Android动画之萌萌哒蜡烛吹蜡烛动画
  4. html点击文字下拉,利用jQuery实现可输入搜索文字的下拉框
  5. 《推荐系统实践》第二章 利用用户行为数据
  6. Vue图片在为动态变量路径显示不出来怎么办 ,但是通过img标签显示正常 这是为什么?
  7. 视觉机器学习之--决策树学习 方差意义 Cnm的意思
  8. python读取excel文件,把指定行表红
  9. 根据气象预警等级颜色获取图片名称,返回对应图片url的方法
  10. 生活用纸抗张强度预测Baseline