20211011
This commit is contained in:
1 parent
25506c6e18
commit
168b0f70aa
1 file changed
+299
-1
+299
-1
@@ -382,10 +382,308 @@
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"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": "eeea1429-e574-4d3b-88fd-0ddb3c090947",
|
||||
"id": "5ff3d5dd-b8dd-4707-8e29-26ba6cf97070",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
|
||||
Reference in new issue
Block a user