修改定稿pdf文件读取
This commit is contained in:
512song@sina.com committed 2021-10-12 08:28:59 +08:00
1 parent 168b0f70aa
commit 2e32e0b99c
1 file changed
+68 -221
Regular → Executable
+68 -221
View File
@@ -391,162 +391,25 @@
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "0b0d621c-f2be-4dcb-a1f0-4b16196d25ee",
"cell_type": "markdown",
"id": "308511e7-0f2d-40bc-a151-68f26ee635a2",
"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"
"source": [
"### pdfminer读取PDF文件"
]
},
{
"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"
]
}
],
"cell_type": "code",
"execution_count": null,
"id": "0b0d621c-f2be-4dcb-a1f0-4b16196d25ee",
"metadata": {},
"outputs": [],
"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",
"from newpdfminer.pdfparser import PDFParser, PDFDocument\n",
"from newpdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter\n",
"from newpdfminer.converter import PDFPageAggregator\n",
"from newpdfminer.layout import LAParams, LTTextBox\n",
"from newpdfminer.pdfinterp import PDFTextExtractionNotAllowed\n",
"\n",
"path = \"5.pdf\"\n",
"\n",
@@ -586,29 +449,23 @@
" print(x.get_text().strip())"
]
},
{
"cell_type": "markdown",
"id": "8fff7f1e-b52c-4666-8a2c-e9cde85a8e01",
"metadata": {},
"source": [
"### pdfplumber读取PDF文件"
]
},
{
"cell_type": "code",
"execution_count": 14,
"execution_count": null,
"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)"
]
}
],
"outputs": [],
"source": [
"import pdfplumber\n",
"from PIL import Image\n",
"\n",
"# 读取 PDF 文档\n",
"pdf = pdfplumber.open(\"5.pdf\")\n",
@@ -618,75 +475,65 @@
"print(\"-----------------------------------------\")\n",
"\n",
"# 读取第 4 页;索引从 1 开始\n",
"page = pdf.pages[4] \n",
"page = pdf.pages[0] \n",
"print(\"本页:\",page.page_number + 1)\n",
"print(\"-----------------------------------------\")\n",
"\n",
"# 单页文件存储为图片\n",
"#im = page.to_image()\n",
"#im.save('./5_1.png', format='PNG')\n",
"# 单页文件中原始图片读取,不能读取图表文件\n",
"#imgs = page.images\n",
"#for i, img in enumerate(imgs):\n",
"# size = img['width'], img['height']\n",
"# data = img['stream'].get_data()\n",
"# out_path = f'003pdf_images_{i}.png'\n",
"# with open(out_path, 'wb') as fimg_out:\n",
"# fimg_out.write(data)\n",
"# 导出第 4 页文本\n",
"text = page.extract_text()\n",
"print(text)"
"print(text)\n"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "95e19593-a24a-4ded-a25b-abdc4685647e",
"cell_type": "markdown",
"id": "59e8775b-e2d6-4963-9376-4a944108ec58",
"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变量,将其返回为一列关键字。"
"### fitz1.8读取PDF文件中的图片"
]
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 38,
"id": "5ff3d5dd-b8dd-4707-8e29-26ba6cf97070",
"metadata": {},
"outputs": [],
"source": []
"source": [
"import fitz\n",
"import re\n",
"import os\n",
"\n",
"file_path = '5.pdf' # PDF 文件路径\n",
"dir_path = './data' # 存放图片的文件夹\n",
"\n",
"def pdf2image1(path, pic_path):\n",
" checkIM = r\"/Subtype(?= */Image)\"\n",
" pdf = fitz.open(path)\n",
" lenXREF = pdf.xref_length()\n",
" count = 1\n",
" for i in range(1, lenXREF):\n",
" text = pdf.xref_object(i)\n",
" isImage = re.search(checkIM, text)\n",
" if not isImage:\n",
" continue\n",
" pix = fitz.Pixmap(pdf, i)\n",
" new_name = f\"img_{count}.png\"\n",
" pix.writePNG(os.path.join(pic_path, new_name))\n",
" count += 1\n",
" pix = None\n",
"\n",
"pdf2image1(file_path, dir_path)"
]
}
],
"metadata": {