714 lines
34 KiB
Plaintext
714 lines
34 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "333a5431-a697-4330-a587-455d6d18ebb0",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 文件管理"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bcd48bb6-4756-4748-ac8b-854eeee92a3b",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 数字文件名转换为文本文件名"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "54b320e8-c3c1-4214-9a9e-db13c2558604",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import os,sys,shutil\n",
|
||
"import openpyxl\n",
|
||
"import math\n",
|
||
"\n",
|
||
"fi_xls = os.getcwd() + '/file/中国石油化工股份有限公司安庆炼化分公司员工在职人员名单.xlsx'\n",
|
||
"fi_path = os.getcwd() + '/file/210924'\n",
|
||
"old = []\n",
|
||
"dict1 = {}\n",
|
||
"\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"depart = []\n",
|
||
"for n in range(2,sheet.max_row+1): \n",
|
||
" m_name = sheet.cell(n,1).value.strip()\n",
|
||
" m_depart = sheet.cell(n,5).value\n",
|
||
" if m_depart not in depart:\n",
|
||
" depart.append(sheet.cell(n,5).value)\n",
|
||
" dict1[int(m_name.split('.')[0])] = [sheet.cell(n,2).value.strip(),sheet.cell(n,5).value.strip()]\n",
|
||
" \n",
|
||
"# 创建部门办公室 \n",
|
||
"m_path = os.getcwd()+'/file/210924/new'\n",
|
||
"for pn in depart:\n",
|
||
" if not os.path.exists(m_path + '/' + pn):\n",
|
||
" os.mkdir(m_path + '/' + pn)\n",
|
||
"fl=os.listdir(fi_path)\n",
|
||
"for fn in fl:\n",
|
||
" if os.path.isfile(fi_path + '/' + fn):\n",
|
||
" ofn = int(fn.split('.')[0])\n",
|
||
" old.append(ofn) \n",
|
||
"old.sort()\n",
|
||
"for n in old: \n",
|
||
" o_name = f'{fi_path}/{n}.pdf'\n",
|
||
" n_name = f'{fi_path}/new/{dict1[n][1]}/{str(n).rjust(5,\"0\")}-{dict1[n][0]}.pdf'\n",
|
||
" if not os.path.exists(n_name):\n",
|
||
" shutil.copyfile(o_name,n_name)\n",
|
||
" print(n_name)\n",
|
||
"#print(dict1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "69712868-6786-430b-8591-f6828d781588",
|
||
"metadata": {},
|
||
"source": [
|
||
"## PDF文件压缩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8492dc14-739e-4c78-a302-f4b57ae571dd",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import fitz\n",
|
||
"import os\n",
|
||
"\n",
|
||
"\n",
|
||
"def covert2pic(zoom):\n",
|
||
" if os.path.exists('.pdf'): # 临时文件,需为空\n",
|
||
" os.removedirs('.pdf')\n",
|
||
" os.mkdir('.pdf')\n",
|
||
" for pg in range(totaling):\n",
|
||
" page = doc[pg]\n",
|
||
" zoom = int(zoom) #值越大,分辨率越高,文件越清晰\n",
|
||
" rotate = int(0)\n",
|
||
" print(page)\n",
|
||
" trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)\n",
|
||
" pm = page.getPixmap(matrix=trans, alpha=False)\n",
|
||
" \n",
|
||
" lurl='.pdf/%s.jpg' % str(pg+1)\n",
|
||
" pm.writePNG(lurl)\n",
|
||
" doc.close()\n",
|
||
"\n",
|
||
"def pic2pdf(obj):\n",
|
||
" doc = fitz.open()\n",
|
||
" for pg in range(totaling):\n",
|
||
" img = '.pdf/%s.jpg' % str(pg+1)\n",
|
||
" imgdoc = fitz.open(img) # 打开图片\n",
|
||
" pdfbytes = imgdoc.convertToPDF() # 使用图片创建单页的 PDF\n",
|
||
" os.remove(img) \n",
|
||
" imgpdf = fitz.open(\"pdf\", pdfbytes)\n",
|
||
" doc.insertPDF(imgpdf) # 将当前页插入文档\n",
|
||
" if os.path.exists(obj): # 若文件存在先删除\n",
|
||
" os.remove(obj)\n",
|
||
" doc.save(obj) # 保存pdf文件\n",
|
||
" doc.close()\n",
|
||
"\n",
|
||
"\n",
|
||
"def pdfz(sor, obj, zoom): \n",
|
||
" covert2pic(zoom)\n",
|
||
" pic2pdf(obj)\n",
|
||
" \n",
|
||
"\n",
|
||
"\n",
|
||
"sor = \"5.pdf\" # 需要压缩的PDF文件\n",
|
||
"obj = \"new-\" + sor\n",
|
||
"doc = fitz.open(sor) \n",
|
||
"totaling = doc.pageCount\n",
|
||
"\n",
|
||
"zoom = 150 # 清晰度调节,缩放比率\n",
|
||
"pdfz(sor, obj, zoom)\n",
|
||
"os.removedirs('.pdf')\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "88d84849-5b98-48cb-86b1-e96757a8615f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from pdf2image import convert_from_path, convert_from_bytes\n",
|
||
"import os,sys\n",
|
||
"import tempfile\n",
|
||
"from pdf2image.exceptions import (\n",
|
||
" PDFInfoNotInstalledError,\n",
|
||
" PDFPageCountError,\n",
|
||
" PDFSyntaxError\n",
|
||
")\n",
|
||
"#images = convert_from_path('1.pdf',dpi=200,fmt='jpg', output_folder='./sample_data')\n",
|
||
"with tempfile.TemporaryDirectory() as path:\n",
|
||
" images_from_path = convert_from_path('5.pdf', dpi=100,fmt='jpg', output_folder='./pic')\n",
|
||
"print(path)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "058a40ba-4948-4675-8400-e4c762e836ee",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import img2pdf \n",
|
||
"import os,sys\n",
|
||
"import glob\n",
|
||
"\n",
|
||
"fl=glob.glob('./pic/*.jpg')\n",
|
||
"fl.sort()\n",
|
||
"a4inpt = (img2pdf.mm_to_pt(210),img2pdf.mm_to_pt(297))\n",
|
||
"layout_fun = img2pdf.get_layout_fun(a4inpt)\n",
|
||
"with open(\"name.pdf\",\"wb\") as f:\n",
|
||
" f.write(img2pdf.convert(fl,layout_fun=layout_fun))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e997ad75-b2d9-43bf-a1de-8833cfe0cf6a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import glob\n",
|
||
"import fitz # 导入本模块需安装pymupdf库\n",
|
||
"import os,sys\n",
|
||
"\n",
|
||
"def pic2pdf_1(img_path, pdf_path, pdf_name):\n",
|
||
" doc = fitz.open()\n",
|
||
" fl=os.listdir(img_path)\n",
|
||
" fl.sort()\n",
|
||
" width, height = fitz.PaperSize(\"a4\")\n",
|
||
" for img in fl:\n",
|
||
" fn = img_path+'/'+img\n",
|
||
" if os.path.isfile(fn):\n",
|
||
" imgdoc = fitz.open(img_path+'/'+img)\n",
|
||
" pdfbytes = imgdoc.convertToPDF()\n",
|
||
" imgpdf = fitz.open(\"pdf\", pdfbytes,width = width, height = height)\n",
|
||
" doc.insertPDF(imgpdf)\n",
|
||
" doc.save(pdf_path +'/'+ pdf_name)\n",
|
||
" doc.close()\n",
|
||
"\n",
|
||
"img_path = os.getcwd() +'/pic'\n",
|
||
"pdf_path = os.getcwd()\n",
|
||
"pic2pdf_1(img_path=img_path, pdf_path=pdf_path, pdf_name='1.pdf')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1f38e4b6-ef20-4fef-801c-ff47951d2ad6",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 图片文件扫描识别"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8c990b6a-7f8e-4527-a150-65f60bd131ac",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#将指定目录下图片文件进行文字识别\n",
|
||
"import os,sys\n",
|
||
"from aip import AipOcr\n",
|
||
"import glob\n",
|
||
"\n",
|
||
"\"\"\" 你的 APPID AK SK \"\"\"\n",
|
||
"APP_ID = '17553946'\n",
|
||
"API_KEY = 'IMC1ss3Tyo3vEAdVH6jgcdv2'\n",
|
||
"SECRET_KEY = 'Iua6KdhuDtz159rjzGeFGpqgjhnoU0zZ'\n",
|
||
"\n",
|
||
"client = AipOcr(APP_ID, API_KEY, SECRET_KEY)\n",
|
||
"def get_file_content(filePath):\n",
|
||
" with open(filePath, 'rb') as fp:\n",
|
||
" return fp.read()\n",
|
||
"\n",
|
||
"options = {}\n",
|
||
"options[\"language_type\"] = \"CHN_ENG\"\n",
|
||
"options[\"detect_direction\"] = \"true\"\n",
|
||
"options[\"detect_language\"] = \"true\"\n",
|
||
"options[\"probability\"] = \"true\"\n",
|
||
"\n",
|
||
"fi_path = os.getcwd()+'/pic'\n",
|
||
"fl = glob.glob(f'{fi_path}/*.jpg')\n",
|
||
"fl.sort()\n",
|
||
"for fl1 in fl:\n",
|
||
" file_name = fl1\n",
|
||
" image = get_file_content(file_name)\n",
|
||
" result= client.basicGeneral(image, options)\n",
|
||
" if 'words_result' in result:\n",
|
||
" print('\\n'.join([w['words'] for w in result['words_result']]))\n",
|
||
" print('\\n')\n",
|
||
" \n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d936ca99-269b-46f8-8582-fb02ed2cd3cc",
|
||
"metadata": {},
|
||
"source": [
|
||
"## word文档读取"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "d8043425-be9e-4e9e-bbfc-3a2d8885a860",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import docx\n",
|
||
"import json\n",
|
||
"Doc = docx.Document(r\"症状对症处方选穴.docx\")\n",
|
||
"#print(\"檔案內含段落數:\",len(Doc.paragraphs),\"\\n\")\n",
|
||
"testList = []\n",
|
||
"text1 = []\n",
|
||
"dict1 = {}\n",
|
||
"for text in Doc.paragraphs:\n",
|
||
" testList.append(text)\n",
|
||
"i = 0\n",
|
||
"for pg in testList:\n",
|
||
" \n",
|
||
" if len(pg.text) >0:\n",
|
||
" s = ''.join(pg.text.split()) \n",
|
||
" if s[0:1] == '第':\n",
|
||
" i += 1\n",
|
||
" n = 0\n",
|
||
" \n",
|
||
" dict1.setdefault(i,{})\n",
|
||
" dict1[i]['title'] = pg.text.split()[1]\n",
|
||
" dict1[i]['sub'] = {}\n",
|
||
" \n",
|
||
" #dict1[i]['title'].setdefault(i,{})\n",
|
||
" elif s[0:1] == '(':\n",
|
||
" sub = s.split(')')[1]\n",
|
||
" dict2 = {}\n",
|
||
" dict1[i]['sub'].setdefault(sub,[])\n",
|
||
" else:\n",
|
||
" dict1[i]['sub'][sub].append(s)\n",
|
||
"filename = '症状对症处方选穴.json'\n",
|
||
"with open(filename,'w') as fl:\n",
|
||
" json.dump(dict1, fl,ensure_ascii=False) \n",
|
||
"print('ok') "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "c440b599-9c80-4072-8543-d9c381214f1d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import docx\n",
|
||
"import json\n",
|
||
"Doc = docx.Document(r\"常见疾病辨病处方选穴.docx\")\n",
|
||
"#print(\"檔案內含段落數:\",len(Doc.paragraphs),\"\\n\")\n",
|
||
"testList = []\n",
|
||
"text1 = []\n",
|
||
"dict1 = {}\n",
|
||
"for text in Doc.paragraphs:\n",
|
||
" testList.append(text)\n",
|
||
"i = 0\n",
|
||
"for pg in testList:\n",
|
||
" \n",
|
||
" if len(pg.text) >0:\n",
|
||
" s = ''.join(pg.text.split()) \n",
|
||
" if s[0:1] == '第':\n",
|
||
" i += 1\n",
|
||
" n = 0\n",
|
||
" \n",
|
||
" dict1.setdefault(i,{})\n",
|
||
" dict1[i]['title'] = pg.text.split('节')[1]\n",
|
||
" dict1[i]['sub'] = {}\n",
|
||
" \n",
|
||
" #dict1[i]['title'].setdefault(i,{})\n",
|
||
" elif s[0:1] == '(':\n",
|
||
" sub = s.split(')')[1]\n",
|
||
" dict2 = {}\n",
|
||
" dict1[i]['sub'].setdefault(sub,[])\n",
|
||
" else:\n",
|
||
" dict1[i]['sub'][sub].append(s)\n",
|
||
"filename = '常见疾病辨病处方选穴.json'\n",
|
||
"with open(filename,'w') as fl:\n",
|
||
" json.dump(dict1, fl,ensure_ascii=False)\n",
|
||
"print('ok') "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "b5e500b5-14d4-4417-8b5e-46df71a6b6b8",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import re\n",
|
||
"filename = '症状对症处方选穴.json'\n",
|
||
"pattern = r'[\\d\\.]'\n",
|
||
"mo =r'[\\u4e00-\\u9fa5]+'\n",
|
||
"dict2 = {}\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl) \n",
|
||
"for k,v in dict1.items():\n",
|
||
" m_title = v['title']\n",
|
||
" for k1,v1 in v['sub'].items():\n",
|
||
" sub_title = k1 \n",
|
||
" s = ''\n",
|
||
" for mx in v1: \n",
|
||
" s = s + mx\n",
|
||
" list1 = re.split(pattern, s)\n",
|
||
" list2 = []\n",
|
||
" for ss in list1:\n",
|
||
" if ss != '':\n",
|
||
" list3 = re.findall(mo,ss)\n",
|
||
" list2.append(list3)\n",
|
||
" \n",
|
||
" #print(m_title,sub_title,list2)\n",
|
||
" dict2.setdefault(m_title,{})\n",
|
||
" dict2[m_title][sub_title] = list2\n",
|
||
"filename = 'new_症状对症处方选穴.json'\n",
|
||
"with open(filename,'w') as fl:\n",
|
||
" json.dump(dict2, fl,ensure_ascii=False) \n",
|
||
"print('ok') \n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8a555d4f-8b2c-4f2c-af7e-fe8dfbd33f5f",
|
||
"metadata": {},
|
||
"source": [
|
||
"## PDF文件读取"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "0b0d621c-f2be-4dcb-a1f0-4b16196d25ee",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"WARNING:pdfminer.cmapdb:The code b'c\\x07h\\x07\\xff\\x0cOFT\\x0ch7\\x9a\\xd8^\\xa6S\\xca\\x91\\xcd\\x91\\xcfv\\x84N\\xbab@b\\xe5g\\tv\\x84\\x81\\x02\\x80\\xaa\\x91\\xcfS\\xef\\x80\\xfdN\\rT\\x0c\\xff\\x0cN_\\x01f/b\\x11N\\xec\\x8b\\xf4v\\x84OS\\x81\\x02\\x80\\xaas\\x87\\xff\\x0cb@N\\xe5SUSUS\\xeag\\t' has an uneven length, trimming last byte.\n",
|
||
"WARNING:pdfminer.cmapdb:The code b\"g:OSS\\xeag\\tW(l'O\\x9b^\\x94QE\\x8d\\xb3v\\x84`\\xc5Q\\xb5N\\x0bbM\\x80\\xfdkc^8]\\xe5O\\x00\\x02N\\xbaOSQ\\x85\\x90\\xe8v\\x84l'O\\x9b~\\xd9Qh\\x90\\xe8\\x97`\\x80\\xbav\\x84T|T8ge\\x83\\xb7_\\x97\\xff\\x0cW(T|T8\" has an uneven length, trimming last byte.\n",
|
||
"WARNING:pdfminer.cmapdb:The code b\"\\x91\\xcfY'v\\x84N\\xbaQv\\x8e\\xabOSO\\x9bl'\\x80\\xfdR\\x9b\\x01_:\\xff\\x0c_\\xc3\\x80\\xbaR\\x9f\\x80\\xfd_:Y'0\\x02^\\x0cg\\x1b~\\xe7~\\xedO\\xddc\\x01\\x82oY}v\\x84Pe^\\xb7u\\x1fm;N``\\xef0\\x02\" has an uneven length, trimming last byte.\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"中国石化\n",
|
||
"安庆石化公司\n",
|
||
"2021年09月\n",
|
||
"包永\n",
|
||
"00005\n",
|
||
"中国石化\n",
|
||
"安庆石化公司\n",
|
||
"姓名\n",
|
||
"编号\n",
|
||
"性别\n",
|
||
"年龄\n",
|
||
"1. 综合评定\n",
|
||
"包永\n",
|
||
"00005\n",
|
||
"男\n",
|
||
"44\n",
|
||
"测试标准\n",
|
||
"身高体重\n",
|
||
"肺活量\n",
|
||
"握力\n",
|
||
"坐位体前屈\n",
|
||
"纵跳\n",
|
||
"单脚站立\n",
|
||
"选择反应时\n",
|
||
"台阶指数\n",
|
||
"俯卧撑\n",
|
||
"国民体质测定标准\n",
|
||
"174.7 厘米, 73.6 公斤\n",
|
||
"3812 毫升\n",
|
||
"51 千克\n",
|
||
"20 厘米\n",
|
||
"38.4 厘米\n",
|
||
"13.2 秒\n",
|
||
"0.554 秒\n",
|
||
"65 分\n",
|
||
"39 次\n",
|
||
"5分\n",
|
||
"4分\n",
|
||
"4分\n",
|
||
"5分\n",
|
||
"4分\n",
|
||
"3分\n",
|
||
"3分\n",
|
||
"4分\n",
|
||
"5分\n",
|
||
"感谢您完成测试,以《国民体质测定标准》综合评级,您的总分为28分(其中项目纵跳、俯卧撑因\n",
|
||
"年龄或其它原因超出评级范围,得分仅供参考,不计入总分),等级为一级(优秀)。\n",
|
||
"2. 分析报告\n",
|
||
"身高(厘米)\n",
|
||
"174.7\n",
|
||
"体重(公斤)\n",
|
||
"73.6\n",
|
||
"理想BMI参考值:18.5 ~ 23.9\n",
|
||
"BMI\n",
|
||
"24.1\n",
|
||
"BMI是Body Mass Index的缩写,中文为「身高体重指数」,是以身高、体重比例拿来用作肥胖的\n",
|
||
"指标,但同样高度及重量的人所拥有的脂肪量可能不同,也Ŧ⽢ᅎ葏厁ʀꩳ蟿ౢ䁎啓啓\n",
|
||
"靠BMI值并无法完整反映出一个人的健康状态,建议可以两个数据搭配参考,对自己的身材更有了\n",
|
||
"解和掌握。 BMI值相同的人,体格可能不同。并不是每个人都适用BMI的。如:对肌肉很发达的运\n",
|
||
"动员或有水肿的病人,体重指数值可能较高,难以准确评估其肥胖程度。老年人的肌肉组织与其脂\n",
|
||
"肪组织相比,肌肉组织的减少较多,计算的体重指数值可能会低估其肥胖程度。而相等BMI值的女\n",
|
||
"性的体脂百分含量一般大于男性。\n",
|
||
"您的BMI值在正常范围之内。希望今后继续加强锻炼,保持良好的生活习惯。\n",
|
||
"肺活量(vital capacity)是指在最大吸气后尽力呼气的气量。包括潮气量、补吸气量和补呼气量三\n",
|
||
"部分。潮气量是指一次呼吸周期中肺吸量或呼出的气量,在潮气量之外再吸入的最大气量为补吸气\n",
|
||
"量,在潮气量之外再呼出的最最大量为补呼气量,最大呼气后残留在肺内的气量为余气量。 肺活量\n",
|
||
"与人的呼吸密切相关。生理学研究表明:人体的各器官、系统、组织、细胞每时每刻都在消耗氧,\n",
|
||
"机体只有在氧供应充足的情况下才能正常工伀Ɏ멏卑薐葬❏魾梐悀멶葔籔㡧斃띟響⡔籔\n",
|
||
"过程中,肺不仅要摄入氧气,还要将体内代谢出的二氧化碳排出。 可以这样认为:肺是机体气体交\n",
|
||
"换的中转站,这个中转站的容积大小直接决定着每次呼吸气体交换的量,这是检测肺功能的最直观、\n",
|
||
"也是最客观的指标。\n",
|
||
"健康状况愈好的人肺活量愈大,您的身体健康状况良好。肺活量能够反映一个人的心肺功能,肺活\n",
|
||
"量大的人其身体供氧能力ş㫿쎀멒龀ﵟ㩙✰ɞ౧᭾Ƃ潙絶葐敞띵Ὥ㭎恠\n",
|
||
"握力主要是测试上肢肌肉群的发达程度,测试受试者前臂和手部肌肉力量,反映人体上肢力量的发\n",
|
||
"展水平的一种指标。 在体能测试中,它常以握力体重指数的形式体现,即把握力的大小与被测人的\n",
|
||
"体重相联系,以获得最科学的体力评估。 握力测试偏重于力量,对于一般人而言,如果体检各项指\n",
|
||
"标正常且不是亚健康状态,即便握力较弱,基本不用担心影响寿命。 越来越多研究表明,握力强可\n",
|
||
"以保护我们免受心脏病、糖尿病和痴呆等疾病的侵害。\n",
|
||
"您的握力很好,研究发现握力强的健康中年人在记忆测试、推理和快速思考能力等方面表现更好,\n",
|
||
"说明您有健康的大脑,请保持良好的生活习惯。\n",
|
||
"坐位体前屈的测试目的是测量在静止状态下的躯干、腰、髋等关节可能达到的活动幅度,主要反映\n",
|
||
"这些部位的关节、韧带和肌肉的伸展性和弹性及身体柔韧素质的发展水平。 柔韧性是身体健康素质\n",
|
||
"的重要组成部分,经常做伸展练习可以保持肌腱、肌肉及韧带等软组织的弹性使柔韧性得到充分发\n",
|
||
"展,人体关节的活动范围将明显加大,关节灵活性也将增强。同时,动作将更加协调、准确、优美,\n",
|
||
"在体育活动和日常生活中可减少由于动作幅度加大、扭转过猛而产生的关节、肌肉等软组织损伤。\n",
|
||
"您的柔韧性程度较好,关节的活动幅度较大,关节灵活性较强。柔韧素质与健康的关系极为密切,\n",
|
||
"您的柔韧性高,也说明身体的协调能力强,能更好地发挥力量、速度等素质,对防止运动创伤等都\n",
|
||
"有积极的作用。\n",
|
||
"纵跳主要用来量化人体的爆发力,是人体肌肉力量、身体柔韧性、协调性的综合体现。 通过纵跳,\n",
|
||
"可以强化人的大小腿的肌肉,增强下肢力量,让人行走过程中步伐稳健,不易跌倒;同时可以增强\n",
|
||
"人体缓冲退让能力,使肌腱、韧带、肌肉都得到锻炼。 平时通过纵跳活动,能够活动筋骨,加强体\n",
|
||
"内物质代谢,增强骨骼强度和密度。\n",
|
||
"您的成绩良好,表明您肌肉力量、身体柔韧性、协调性方面综合性表现良好。希望今后加强锻炼,\n",
|
||
"注意保持。\n",
|
||
"闭眼单脚站立是通过测量人体在没有任何可视参照物的情况下,仅依靠大脑前庭器官的平衡感受器\n",
|
||
"和全身肌肉的协调运动,来维持身体重心在单脚支撑面上的时间,以反映平衡能力的强弱。 闭眼单\n",
|
||
"脚站立,归根到底,还是在测试人的平衡能力。平衡能力不仅是人们日常生活和体育活动中必须具\n",
|
||
"备的一种能力,它更是一种复杂的人体综合能力,平衡力下降,危害可想而知。近年来,我国国民\n",
|
||
"整体的平衡能力呈下降趋势,尤其是中老年群体。\n",
|
||
"您的成绩较低,说明身体老化比正常情况快,尤其是在平衡能力方面需要加强锻炼,建议经常练习\n",
|
||
"金鸡独立等锻炼人体平衡性的运动。\n",
|
||
"选择反应时是一个很敏锐的反应变量指标,是作为测量反应速度快慢及反应前后心理活动过程的客\n",
|
||
"观指标。 选择反应时能体现人的智力和能力,也可作为一种可靠的心理活动指标,测定大脑皮层的\n",
|
||
"兴奋和抑制功能,分析人的感觉,注意学习与记忆思维个性差别等各种心理活动。\n",
|
||
"您的成绩较低,可以参与针对性体育运动来提高反应速度和心理因素等方面的能力,比如太极拳,\n",
|
||
"瑜伽等。\n",
|
||
"台阶指数是用来评价心肺功能适应水平的方法。研究表明:心肺适应能力强的人比心肺适应能力弱\n",
|
||
"的人在运动后3分钟恢复期内心跳频率低。研究表明:心肺适应能力强的人比心肺适应能力弱的人\n",
|
||
"在运动后3分钟恢复期内心跳频率低。 台阶指数也是反映人体心血管系统机能状况的重要指数。台\n",
|
||
"阶试验指数值越大,则反映你心血管系统的机能水平越高,反之亦然,不过具体情况还要视被测人\n",
|
||
"的身高、体重和肺活量而定。\n",
|
||
"您的指数较好,在一定程度上反映出心血管系统机能很好,心肺适应能力较强。你的血液循环系统\n",
|
||
"工作正常——你的血管是健康的。请继续保持良好的生活习惯。\n",
|
||
"俯卧撑属于一种比较全面的锻炼方式,主要锻炼的是肱三头肌、腹肌等上肢肌肉,可以起到健美身\n",
|
||
"型的效果。同时能够加强心肺功能,促进身体血液循环,减少患病的比率。 俯卧撑对发展平衡和支\n",
|
||
"撑能力也起重要作用。可以改善中枢神经系统,有益于骨骼的坚实,关节的灵活,韧带的牢固,肌\n",
|
||
"肉的粗壮及弹性,同时能加速血液循环,增大肺活量,促进生长发育,提高运动能力。 结合身体情\n",
|
||
"况经常做俯卧撑,能让人心情放松,精力充沛,更好的投入到工作学习中。另外,俯卧撑对于消除\n",
|
||
"身体的赘肉也有一定效果,有利于减肥。\n",
|
||
"您的成绩良好,表明您肌肉力量等综合性表现良好。希望今后加强锻炼,注意保持。\n",
|
||
"3. 智慧健康方案\n",
|
||
"每个项目都与脏腑功能、人体八大系统能力息息相关,设法提高项目成绩,也可以改善潜在的亚健\n",
|
||
"康状态。\n",
|
||
"建议分类\n",
|
||
"建议项\n",
|
||
"您的身体状态非常好。几乎没有相关性较高的建议,希望您继续保持。系统会整合您的所有项目\n",
|
||
"成绩,依据相应年龄段、性别的每个项目与脏腑、经络、人体系统及子系统的权重和关系形成条\n",
|
||
"件,筛选出符合条件的所有身体机能成绩组合。特殊体质、职业(如运动相关)的人群可能存在\n",
|
||
"偏差,请以医院诊断为准。\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from pdfminer.pdfparser import PDFParser, PDFDocument\n",
|
||
"from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter\n",
|
||
"from pdfminer.converter import PDFPageAggregator\n",
|
||
"from pdfminer.layout import LAParams, LTTextBox\n",
|
||
"from pdfminer.pdfinterp import PDFTextExtractionNotAllowed\n",
|
||
"\n",
|
||
"path = \"5.pdf\"\n",
|
||
"\n",
|
||
"# 用文件对象来创建一个pdf文档分析器\n",
|
||
"praser = PDFParser(open(path, 'rb'))\n",
|
||
"# 创建一个PDF文档\n",
|
||
"doc = PDFDocument()\n",
|
||
"# 连接分析器 与文档对象\n",
|
||
"praser.set_document(doc)\n",
|
||
"doc.set_parser(praser)\n",
|
||
"\n",
|
||
"# 提供初始化密码\n",
|
||
"# 如果没有密码 就创建一个空的字符串\n",
|
||
"doc.initialize()\n",
|
||
"\n",
|
||
"# 检测文档是否提供txt转换,不提供就忽略\n",
|
||
"if not doc.is_extractable:\n",
|
||
" raise PDFTextExtractionNotAllowed\n",
|
||
"else:\n",
|
||
" # 创建PDf 资源管理器 来管理共享资源\n",
|
||
" rsrcmgr = PDFResourceManager()\n",
|
||
" # 创建一个PDF设备对象\n",
|
||
" laparams = LAParams()\n",
|
||
" device = PDFPageAggregator(rsrcmgr, laparams=laparams)\n",
|
||
" # 创建一个PDF解释器对象\n",
|
||
" interpreter = PDFPageInterpreter(rsrcmgr, device)\n",
|
||
"\n",
|
||
" # 循环遍历列表,每次处理一个page的内容\n",
|
||
" for page in doc.get_pages():\n",
|
||
" interpreter.process_page(page) \n",
|
||
" # 接受该页面的LTPage对象\n",
|
||
" layout = device.get_result()\n",
|
||
" # 这里layout是一个LTPage对象,里面存放着这个 page 解析出的各种对象\n",
|
||
" # 包括 LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等 \n",
|
||
" for x in layout:\n",
|
||
" if isinstance(x, LTTextBox):\n",
|
||
" print(x.get_text().strip())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"id": "c8685b70-55b3-439e-852d-c4fbb67b6326",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"ename": "ImportError",
|
||
"evalue": "cannot import name 'uint_value' from 'pdfminer.pdftypes' (/home/songyi/data/lib/python3.8/site-packages/pdfminer/pdftypes.py)",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
|
||
"\u001b[0;32m<ipython-input-14-1ad7fc39921b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpdfplumber\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;31m# 读取 PDF 文档\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mpdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpdfplumber\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"5.pdf\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/data/lib/python3.8/site-packages/pdfplumber/__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_version\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m__version__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mpdf\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPDF\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpdfminer\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/data/lib/python3.8/site-packages/pdfplumber/pdf.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mitertools\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpdfminer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpdfparser\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPDFParser\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mpdfminer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpdfdocument\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPDFDocument\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpdfminer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpdfpage\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPDFPage\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpdfminer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpdfinterp\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPDFResourceManager\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/data/lib/python3.8/site-packages/pdfminer/pdfdocument.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mpsparser\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPSEOF\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mliteral_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mLIT\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mKWD\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0msettings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mpdftypes\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPDFException\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0muint_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mPDFTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mPDFStream\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0mPDFObjectNotFound\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecipher_all\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist_value\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mdict_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream_value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;31mImportError\u001b[0m: cannot import name 'uint_value' from 'pdfminer.pdftypes' (/home/songyi/data/lib/python3.8/site-packages/pdfminer/pdftypes.py)"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import pdfplumber\n",
|
||
"\n",
|
||
"# 读取 PDF 文档\n",
|
||
"pdf = pdfplumber.open(\"5.pdf\")\n",
|
||
"\n",
|
||
"# 获取页数\n",
|
||
"print(\"总页数:\",len(pdf.pages))\n",
|
||
"print(\"-----------------------------------------\")\n",
|
||
"\n",
|
||
"# 读取第 4 页;索引从 1 开始\n",
|
||
"page = pdf.pages[4] \n",
|
||
"print(\"本页:\",page.page_number + 1)\n",
|
||
"print(\"-----------------------------------------\")\n",
|
||
"\n",
|
||
"# 导出第 4 页文本\n",
|
||
"text = page.extract_text()\n",
|
||
"print(text)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "95e19593-a24a-4ded-a25b-abdc4685647e",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚\n",
|
||
"`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\\H~µ“óSU†ˆzÙzËOïSgd‚^ú‰®Ÿy\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import PyPDF2 \n",
|
||
"import textract\n",
|
||
"\n",
|
||
"#open能让你读取文件\n",
|
||
"pdfFileObj = open('5.pdf','rb')\n",
|
||
"#变量pdfReader是即将被解析的可读对象\n",
|
||
"pdfReader = PyPDF2.PdfFileReader(pdfFileObj)\n",
|
||
"#分辨清楚页码数量能让我们解析所有页码的文件\n",
|
||
"num_pages = pdfReader.numPages\n",
|
||
"count = 0\n",
|
||
"text = \"\"\n",
|
||
"# while 循环会读取每一页\n",
|
||
"while count < num_pages:\n",
|
||
" pageObj = pdfReader.getPage(count)\n",
|
||
" count +=1\n",
|
||
" text += pageObj.extractText()\n",
|
||
"#这里的if语句用以检查上面的库是否返回了词汇,因为PyPDF2 无法读取扫描文本\n",
|
||
" if text != \"\":\n",
|
||
" text = text\n",
|
||
"# 如果上面返回False,就运行库textract 将PDF扫描文件转换为文本\n",
|
||
" \n",
|
||
" print(text)\n",
|
||
"# 现在我们获得了一个text变量,包含了从PDF文件中提取的文本。\n",
|
||
"# 输入print(text)查看包含的内容。可能会包含很多空格,可能还有’\\n’等这样的字眼。\n",
|
||
"# 下面我们会清洗得到的text变量,将其返回为一列关键字。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "5ff3d5dd-b8dd-4707-8e29-26ba6cf97070",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.8.10"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|