"""
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author : 史沐凡
# @file : pdf____张坤_文档转换工具.py
# @Time : 2022/7/24 22:21
# @Function:
"""
import glob
import os
import re
from openpyxl import Workbook
import pdfplumber
def getfields(filepath):
'''
直接读取pdf,获取所需要的字段
患者姓名 标识号 出生日期 性别 保险集团 胶囊标识号 操作日期 转诊医生 登记者 预约者
转诊原因 体重 身高 腰围 体型 通过胃部的时间 通过小肠的时间 操作信息与发现 摘要与建议
:return:list
'''
print(filepath)
患者姓名 = ""
标识号 = ""
出生日期 = ""
性别 = ""
保险集团 = ""
胶囊标识号 = ""
操作日期 = ""
转诊医生 = ""
登记者 = ""
预约者 = ""
转诊原因 = ""
体重 = ""
身高 = ""
腰围 = ""
体型 = ""
通过胃部的时间 = ""
通过小肠的时间 = ""
操作信息与发现 = ""
摘要 = ""
建议 = ""
fields = ['患者姓名',
'标识号',
'出生日期',
'性别',
'保险集团',
'胶囊标识号',
'操作日期',
'转诊医生',
'登记者',
'预约者',
'转诊原因',
'体重',
'身高',
'腰围',
'体型',
'通过胃部的时间',
'通过小肠的时间',
'操作信息与发现',
'摘要',
'建议']
nr = ""
with pdfplumber.open(filepath) as pdf:
for page in pdf.pages:
text = page.extract_text()
nr=nr+text
nr = nr.strip()
print(nr)
res = re.search(r"患者姓名 (.*)", nr, 0)
if res: 患者姓名 = res.group(1).strip()
res = re.search(r"标识号 (.*)", nr, 0)
if res: 标识号 = res.group(1).strip()
res = re.search(r"出生日期 (.*)", nr, 0)
if res: 出生日期 = res.group(1).strip()
res = re.search(r"性别 (.*)性", nr, 0)
if res: 性别 = res.group(1).strip()
res = re.search(r"保险集团 (.*)", nr, 0)
if res: 保险集团 = res.group(1).strip()
res = re.search(r"胶囊标识号 (.*)", nr, 0)
if res: 胶囊标识号 = res.group(1).strip()
res = re.search(r"操作日期 (.*)", nr, 0)
if res: 操作日期 = res.group(1).strip()
res = re.search(r"转诊医生 (.*)", nr, 0)
if res: 转诊医生 = res.group(1).strip()
res = re.search(r"登记者 (.*)", nr, 0)
if res: 登记者 = res.group(1).strip()
res = re.search(r"预约者 (.*)", nr, 0)
if res: 预约者 = res.group(1).strip()
res = re.search(r"转诊原因(.*)患者数据", nr, re.DOTALL)
if res:
转诊原因 = res.group(1).strip()
res = re.search(r"体重 ?:(\d*) ?kg", nr, 0)
if res: 体重 = res.group(1).strip()
res = re.search(r"身高 ?:(\d*) ?cm", nr, 0)
if res: 身高 = res.group(1).strip()
res = re.search(r"腰围 ?:(\d*) ?cm", nr, 0)
if res: 腰围 = res.group(1).strip()
res = re.search(r"体型 ?:(.{1,3}),", nr, 0)
if res: 体型 = res.group(1).strip().strip()
res = re.search(r"通过胃部的时间 ?:(.*),", nr, 0)
if res: 通过胃部的时间 = res.group(1).strip()
res = re.search(r"通过小肠的时间 ?:(.*)", nr, 0)
if res: 通过小肠的时间 = res.group(1).strip()
res = re.search(r"操作信息与发现(.*)摘要与建议", nr, re.DOTALL)
if res:
操作信息与发现 = res.group(1).strip()
操作信息与发现 = 操作信息与发现.replace(" ", "")
ls = 操作信息与发现.split("\n")
操作信息与发现 = ";".join(ls).strip()
res = re.search(r"摘要与建议(.*)建议:", nr, re.DOTALL)
if res:
摘要 = res.group(1).strip()
摘要 = 摘要.replace(" ", "")
ls = 摘要.split("\n")
摘要 = ";".join(ls).strip()
res = re.search(r"建议:(.*)签名", nr, re.DOTALL)
if res:
建议 = res.group(1).strip()
建议 = 建议.replace(" ", "")
ls = 建议.split("\n")
建议 = ";".join(ls).strip()
print("*" * 88)
ls = [患者姓名, 标识号, 出生日期, 性别,
保险集团, 胶囊标识号, 操作日期, 转诊医生,
登记者, 预约者, 转诊原因, 体重,
身高, 腰围, 体型, 通过胃部的时间,
通过小肠的时间, 操作信息与发现, 摘要,建议]
print(ls)
if (all(ls)):
return ls
else:
return ls
if __name__ == '__main__':
fields = ['患者姓名', '标识号', '出生日期', '性别', '保险集团', '胶囊标识号', '操作日期', '转诊医生', '登记者', '预约者', '转诊原因',
'体重', '身高', '腰围',
'体型', '通过胃部的时间', '通过小肠的时间', '操作信息与发现', '摘要','建议']
print(fields)
root = os.getcwd()
ls = glob.glob("pdf报告\*.pdf")
big_ls = []
for i in ls:
i=os.path.join(os.getcwd(),i)
ls = getfields(i)
big_ls.append(ls)
for i in big_ls: print(i)
wb = Workbook()
ws = wb.active
ws.append(fields)
for i in big_ls:
ws.append(i)
wb.save(r'pdf报告/pdf转换表格.xlsx')
exit(0)