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. R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称、将数据写入Excel文件新的表单(sheet)中、将文件保存为xls文件格式(而不是xlsx)
  2. 微信开发之连接数据库
  3. 实验18:使用@Autowired注解实现根据类型实现自动装配★
  4. 线程知识-ThreadLocal使用详解
  5. XML 解析错误:XML 或文本声明不在实体的开头位置,有效的解决方法
  6. java 字符串子串_java实现字符串匹配求两个字符串的最大公共子串
  7. Andorid之jni里面崩溃然后用errno分析结果解决问题
  8. div内容居中和布局居中样式总结
  9. 肇庆计算机商务学校地址,肇庆市商业学校(商业技工学校)招生报名
  10. 算法“视”界杯上演十强争锋,大赛终极一战圆满落幕
  11. X86汇编语言从实模式到保护模式10:进入保护模式
  12. 【博客项目】—用户修改功能(十一)
  13. 制作小游戏贪吃蛇即解决将python制作成exe
  14. atitit.高级编程语言的特性 and 未来趋势与进化.doc
  15. 同态滤波(光照不均)
  16. 服务器硬件规格常用查看命令——CPU相关命令
  17. Kaggle教程 机器学习入门3 你的第一个机器学习模型
  18. B样条曲线拟合(B_Spline_Approximation)
  19. UE4-LOD理解-Distance culling(距离剔除体积)和Visibility culling(可视化剔除体积)
  20. 图解ReentrantLock底层公平锁和非公平锁实现原理

热门文章

  1. 2人同步听歌软件_安卓、IOS双端支持的这款“羞羞”软件!单身慎入啊.....
  2. mysql 恢复 innodb_MySQL:Innodb恢复的学习笔记
  3. linux 下 任务管理器,Linux/Unix下的任务管理器-top命令
  4. SpringMVC基础学习之Restful风格的简单使用
  5. Android MVP(三)内存泄漏分析与动态代理
  6. 关于移动支付,美国零售商能从中国这里学到什么?
  7. MATLAB下载github仓库
  8. webpack配置之Extensions
  9. office365 ppt创意方法(3d模型)
  10. Unity Edior下合并场景 合并网格 合并贴图