python学习笔记之word文档提取

"""
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author  : 史沐凡
# @file    :  pdf____张坤_文档转换工具.py
# @Time    : 2022/7/24 22:21
# @Function:
"""
# 读取docx中的文本代码示例
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)

你可能感兴趣的:(python,python,学习,开发语言)