"""
# !/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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158