python 医学文献检索(包括文献图片中的文字)
python 医学文献检索(包括文献图片中的文字)
- 实现条件
- 图像转文字
- 文献检索
- dataframe创建并插入行
- 具体实现
- 目录展示
- 导入相关库
- pdf转图片函数
- pdf识别text函数
- main函数
- 结果
- 输出的dataframe
- 输出的data.csv
- 输出的图片
- 文献引用
实现条件
图像转文字
import pytesseract
from PIL import Image
text = pytesseract.image_to_string(Image.open('a01.png'))
print(text)
文献检索
path = "./aa" #文件夹目录
files = os.listdir(path) #数组??得到文件夹下的所有文件名称
print (files)
for file in files:logfile = open(path+"/"+file,"r",encoding = 'utf -8')lines = logfile.readlines()for line in lines:if line.find("wxy") != -1:print("111 exist in file:" + file)elif line.find("222") != -1:print ("222 exist in file:" + file)
dataframe创建并插入行
df = pd.DataFrame(data=None, columns=["文献名称", "位置"])
df.loc[len(df.index)] = [1, 7]
print(df)
df.to_csv('data.csv',encoding='gbk',index=0)
具体实现
目录展示
导入相关库
import os
import fitz
import time
import re
import pytesseract
from PIL import Image
from jupyterlab_widgets import data
from pandas import DataFrame
from tqdm import tqdm
pdf转图片函数
def pdf2pic(path, pic_path,keywords,df):'''# 从pdf中提取图片,并转换成文字:param path: pdf的路径:param pic_path: 图片保存的路径:return:'''#t0 = time.clock()t0=time.perf_counter()#现在开始的时间,一个非常小的数,约等于0# 使用正则表达式来查找图片checkXO = r"/Type(?= */XObject)"checkIM = r"/Subtype(?= */Image)"# 打开pdfdoc = fitz.open(path)#lines = doc.readlines()# 图片计数imgcount = 0lenXREF = doc.xref_length()#对象长度# 打印PDF的信息print("文件名:{}, 页数: {}, 对象: {}".format(path, len(doc), lenXREF - 1))lenXREF = doc.xref_length() # 对象长度# 遍历每一个对象for i in range(1, lenXREF):# 定义对象字符串text = doc.xref_object(i)isXObject = re.search(checkXO, text)# 使用正则表达式查看是否是图片isImage = re.search(checkIM, text)# 如果不是对象也不是图片,则continueif not isXObject or not isImage:continueimgcount += 1# 根据索引生成图像pix = fitz.Pixmap(doc, i) # 对象字符串转图像if not pix.colorspace.name in (fitz.csGRAY.name, fitz.csRGB.name):pix = fitz.Pixmap(fitz.csRGB, pix)# 根据pdf的路径生成图片的名称new_name = path.replace('/', '_') + "_img{}.png".format(imgcount)new_name = new_name.replace(':', '')# 如果pix.n<5,可以直接存为PNGif pix.n < 5:pix.save(os.path.join(pic_path, new_name))# 否则先转换CMYKelse:pix0 = fitz.Pixmap(fitz.csRGB, pix)pix0.writePNG(os.path.join(pic_path, new_name))pix0 = None# ------------------------------图像转文字----------------------------text = pytesseract.image_to_string(Image.open(os.path.join(pic_path, new_name)))print(text)# -----------------------------搜索并放入csv文件-----------------------------------if text.find(keywords) != -1:print("exist in file:" + file)df.loc[len(df.index)] = [path, imgcount]# 释放资源pix = Nonet1 = time.perf_counter()print("运行时间:{}s".format(t1 - t0))print("提取了{}张图片".format(imgcount))print("------------------------------------------")
pdf识别text函数
def pdf2text(path,keywords,df):'''获取每页pdf文件文本:param pdf_path: pdf文件路径:return:'''# 打开pdf文件,并新建html文件with fitz.open(path) as pdf:# 遍历每一页pdf,并显示进度条pageIndex=0for page in tqdm(pdf):pageIndex=pageIndex+1text = page.get_text() # 提取文本,传入参数'html'即:page.get_text('html') 则提取每页内容为htmlif text.find(keywords) != -1:print("exist in file:" + file)df.loc[len(df.index)] = [path,pageIndex]print(f'第{pageIndex}页解析内容:\n{text}')
main函数
要搜索的关键字放在第一行了,通过更改keywords字符串来检索不同的内容
path是存放pdf的文件夹,我们检索的只是pdf中的内容
if __name__=='__main__':keywords = "病例" # 搜索的关键词path = "./books" #文件夹目录files = os.listdir(path) #数组??得到文件夹下的所有文件名称print(files)pic_path = r'img'#图片存放文件df = DataFrame(data=None, columns=["文献名称", "位置"])for file in files:m = pdf2pic(path+"/"+file, pic_path,keywords,df)n=pdf2text(path+"/"+file, keywords,df)print(df)df.to_csv('data.csv', encoding='gbk', index=0)
结果
识别pdf中文字和pdf中图片中文字,检索出含有关键字的文件,dataframe展示位置和具体页码
输出的dataframe
输出的data.csv
输出的图片
存放在img文件夹中
文献引用
作业要求-医学文献智能识别与检索系统设计
灵感来源
python中pdf处理库fitz的简单使用
Python如何读取pdf中的图片
python 之遍历文件夹下的所有文件并查找特定内容
SCIHUB你不得不知道的python超级文献搜索工具
python 医学文献检索(包括文献图片中的文字)相关推荐
- python文献检索_文献检索与下载
summer school =================== 国防科技大学 数学系 张弘 第一部分:文献检索与下载 一.背景 国产搜索引擎: 百度,搜狗,雅虎 - 文献下载 当前文献下载的囧境 ...
- 计算机有关的文献检索题目,文献检索第二次计算机检索实习题目(2016.4.10).doc
文档介绍: 第二次计算机检索实****题目本次实****目的是使学生对以下三个外文数据库:PENDEX数据库.荷兰SDOS数据库.德国Springer数据库的使用方法有所了解.通过题目,使学生分别掌握 ...
- 计算机类文献检索考试题,文献检索试题精选2
文献检索试题精选2 1.在SCI E数据库检索高晋生老师发表的文章,检索式正确的是: A.AU=gao jinsheng B.AU=gao js C.AU=js gao D.AU=gao, J-S B ...
- 研究生如何进行文献检索和文献阅读
阅读文献一定不要心浮气躁,要沉下心来大量阅读.在读的过程中有的文献看懂了,但是看不懂的文献也可能会居多.看懂的认真学习借鉴,看不懂的深入探索,实在不行就暂时放下,过一段时间,随着知识和能力的提高慢慢也 ...
- 浅谈文献检索及文献综述
刚进入一个研究领域的时候,往往需要先做一个系统的文献综述以了解该领域研究现状,从而确定自己具体的研究方向.对于学术小白,面对海量文献可能会有无从下手的感觉,因此下面主要就"如何快速检索有用文 ...
- python识别汉字笔画_Python识别图片中的文字
Python识别图片中的文字 一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截 ...
- 【渝粤题库】国家开放大学2021春1443卫生信息与文献检索题目
试卷代号:1443 2021年春季学期期末统一考试 卫生信息与文献检索 试题(开卷) 2021年7月 一.单项选择题(每小题2分,共50分,每小题仅有一项答案正确,请将正确答案的序号填在括号内) 1. ...
- 如何提高文献检索能力?
文献检索是写论文过程中必备能力,丰富的文献阅读量以及前沿的研究成果对比是完成一篇高质量论文的必要保证,在科研工作中经常被问到"如何找到自己研究方向的论文?""文献检索有什 ...
- 文献检索、阅读与管理方法分享(持续更新ing...)
诸神缄默不语-个人CSDN博文目录 最初更新时间:2022.4.19 最近更新时间:2022.4.19 文章目录 1. 文献检索 2. 文献阅读 3. 文献管理 1. 文献检索 一般都可以直接用谷歌搜 ...
最新文章
- 解析远程服务器响应错误,远程服务器返回一个意外的响应:(400)错误的请求,WCF...
- android后台截屏实现(3)--编译screencap
- TextBox控件中只输入整数的几种方法
- ubuntu20.04安裝迅雷
- 你身边有没有“万事不求人”的人?他们后来怎么样了?
- sql学习指南_SQL格式功能的全面指南
- 数据库高可用实战案例-------架构优化之清爽一夏
- ipv6地址_「案例」路由器怎么自动获取IPv6地址?
- Case when的用法
- 俞敏洪:度过有意义的生命(转)
- javaEE 后台框架 SpringMVC Mybatis Shiro druid
- Vue2项目使用mars3d
- 深度学习技术在股票交易上的应用研究调查
- 视频号日引流500+精准流量6大玩法,实现微信后端转化变现丨国仁网络资讯
- JS实现网页开关灯效果
- 东师18秋学期计算机基础3,东师18秋学期(1709、1803、1809)《概率论与统计原理》在线作业答案...
- 镜头矫正 棋盘矫正_矫正强迫,而不是症状
- 六 Python 自学进阶,如果想要打牢基础,应该收藏它
- eric7+pyqt6:快速安装
- 数据结构进阶 八大排序算法详解