博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【文本识别】百度智能云OCR获得MOOC视频教材的文本
阅读量:3915 次
发布时间:2019-05-23

本文共 10227 字,大约阅读时间需要 34 分钟。

获得电子教材文本

PDF获取

例如任意一个,列出了一些参考资料

在这里插入图片描述

可以在网上找到PDF电子版的教材

文字识别

虽然讯飞开放平台也有,但免费的使用时间只有90天,这里使用百度AI开放平台中的通用场景文字识别,详见和

Step1. Access Token获取

详见

# encoding:utf-8import requests # client_id 为官网获取的AK, client_secret 为官网获取的SKhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'response = requests.get(host)if response:    print(response.json())

结果如下:

  • access_token: 要获取的Access Token;
  • expires_in: Access Token的有效期(秒为单位,一般为1个月);
  • 其他参数忽略,暂时不用;
    例如:
{  "refresh_token": "25.b55fe1d287227ca97aab219bb249b8ab.315360000.1798284651.282335-8574074",  "expires_in": 2592000,  "scope": "public wise_adapt",  "session_key": "9mzdDZXu3dENdFZQurfg0Vz8slgSgvvOAUebNFzyzcpQ5EnbxbF+hfG9DQkpUVQdh4p6HbQcAiz5RmuBAja1JJGgIdJI",  "access_token": "24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074",  "session_secret": "dfac94a3489fe9fca7c3221cbf7525ff"}

Step2. 准备数据

之前准备好了PDF,这个接口的调用是上传的图片形式,所以准备一下图片,利用Adobe Acrobat DC将PDF另存为JPG形式,一共五张图片,大致如下:

在这里插入图片描述

step3. 编写程序

官网的示例代码用了base64库,参考:

  • base64生成的编码都是ascii码
  • base64编码或解码都返回的是字节,需要手动转换成字符
# base64编码:传入字节(或二进制),最后返回字节b64_byt = base64.b64encode( 'Base64编码'.encode('utf-8') )print(type(b64_byt), b64_byt)# 
b'QmFzZTY057yW56CB'# 将字节转换成字符b64_str = b64_byt.decode('utf-8')print(type(b64_str), b64_str)#
QmFzZTY057yW56CB# base64解码:传入Base64编码后的字节或字符,最后返回字节byt = base64.b64decode( b64_byt )print(type(byt), byt)#
b'Base64\xe7\xbc\x96\xe7\xa0\x81'# 将字节转换成字符str = byt .decode('utf-8')print(type(str), str )#
Base64编码

base64库咱也看不懂,对着官网的Demo改一下,直接上代码:

# encoding:utf-8import requestsimport base64# client_id 为官网获取的AK, client_secret 为官网获取的SKhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=your client_id&client_secret=your client_secret'response = requests.get(host)# if response:#     print(response.json()['access_token'])request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"# 二进制方式打开图片文件f = open('your path', 'rb')img = base64.b64encode(f.read())params = {
"image":img}access_token = response.json()['access_token']request_url = request_url + "?access_token=" + access_tokenheaders = {
'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers)if response: print (response.json())

结果如下所示:

{'words_result': [{'words': '1.2牛顿运动定律及其应用25'}, {'words': '到潮汐涨落的解释,从人造卫星、宇宙飞船的发射到水坝、桥梁的'}, {'words': '设计,牛顿运动定律都起着重要的作用.从牛顿发表他的运动定'}, {'words': '律到现在的三百多年间,牛顿运动定律有力地推进了人类对自然'}, {'words': '的认识.时至今日,物体的运动仍然吸引着人类的目光,不过我'}, {'words': '们已经登陆月球,有了空间探测器,我们已经解开了运动之谜'}, {'words': '1.2.1牛顿运动定律'}, {'words': '1687年,牛顿出版了《自然哲学的数学原理》(简称《原理》)'}, {'words': '书,将当时一些零散的物理学研究成果归纳在一个严密的逻辑'}, {'words': '体系之中,提出了牛顿运动定律和万有引力定律,并应用它们解'}, {'words': '释了地面上的物体、天体和流体等一些物体的运动,以他的物理'}, {'words': '授课录像:惯性质量与动量'}, {'words': '定律统一了天体与地面上物体的运动.《原理》是一部宏大的物'}, {'words': '理学经典巨著,它的问世标志着经典力学体系的建立,标志着人'}, {'words': '类已经掌握了机械运动的基本规律'}, {'words': '1.牛顿第一定律——惯性定律'}, {'words': '签'}, {'words': '在牛顿之前,伽利略(G. Galilei)就表达了惯性的概念.伽利'}, {'words': '文档:伽利略'}, {'words': '略基于实验推测,如果将作用在物体上的外力全部撤去,物体的'}, {'words': '速度将保持不变,因此力不是维持运动的原因.后来,笛卡儿等'}, {'words': '人进一步发展了关于惯性的思想.牛顿基于前人的工作,总结出'}, {'words': '了牛顿第一定律'}, {'words': '牛顿第一定律:任何物体,如果没有力作用在它上面,都将保'}, {'words': '牛顿第一定律'}, {'words': '持静止或匀速直线运动状态不变'}, {'words': '物体本身具有保持原来运动状态的性质,称为惯性.任何物'}, {'words': '惯性'}, {'words': '体都具有惯性,它是物体的基本属性.牛顿第一定律也称为惯性'}, {'words': '定律'}, {'words': '牛顿第一定律看似简单,其实非常深刻.倘若没有力作用于'}, {'words': '物体之上,静止的物体仍然静止是常见的、好理解的.但是要进'}, {'words': '步推论出运动的物体仍会保持原来的速度就需要抽象的思想'}, {'words': '可以想一想,我们周围是否存在着不受任何外力作用的物体呢?'}, {'words': '当然没有.要透过这些繁杂的现象,抽象出物体的本性绝不是'}, {'words': '件容易的事情.惯性定律恰恰为我们提供了一幅难以直接观察'}, {'words': '到的抽象图景,呈现出孤立粒子“自由运动”的画面,揭示出物体'}, {'words': '本身的一种属性—惯性.物体绝对不受外力的情况是不存在'}, {'words': '的,但是牛顿第一定律仍具有实际意义,可以用于物体所受外力'}, {'words': '小到可以忽略的极限情况.此外,当物体所受的各个力相互抵'}, {'words': '消,也就是合力为零时,物体的速度也会保持不变.除了惯性,牛'}], 'log_id': 1355338137500385280, 'words_result_num': 41}

可以发现和语音识别的结果差不多的,都是字典的形式,这里我们也稍微正则化一下,但值得注意到的是:

if response:    print(response.json()['words_result'])    print(response.json()['words_result'][1])    print(response.json()['words_result_num'])

结果:

[{'words': '1.2牛顿运动定律及其应用25'}, {'words': '到潮汐涨落的解释,从人造卫星、宇宙飞船的发射到水坝、桥梁的'}, {'words': '设计,牛顿运动定律都起着重要的作用.从牛顿发表他的运动定'}, {'words': '律到现在的三百多年间,牛顿运动定律有力地推进了人类对自然'}, {'words': '的认识.时至今日,物体的运动仍然吸引着人类的目光,不过我'}, {'words': '们已经登陆月球,有了空间探测器,我们已经解开了运动之谜'}, {'words': '1.2.1牛顿运动定律'}, {'words': '1687年,牛顿出版了《自然哲学的数学原理》(简称《原理》)'}, {'words': '书,将当时一些零散的物理学研究成果归纳在一个严密的逻辑'}, {'words': '体系之中,提出了牛顿运动定律和万有引力定律,并应用它们解'}, {'words': '释了地面上的物体、天体和流体等一些物体的运动,以他的物理'}, {'words': '授课录像:惯性质量与动量'}, {'words': '定律统一了天体与地面上物体的运动.《原理》是一部宏大的物'}, {'words': '理学经典巨著,它的问世标志着经典力学体系的建立,标志着人'}, {'words': '类已经掌握了机械运动的基本规律'}, {'words': '1.牛顿第一定律——惯性定律'}, {'words': '签'}, {'words': '在牛顿之前,伽利略(G. Galilei)就表达了惯性的概念.伽利'}, {'words': '文档:伽利略'}, {'words': '略基于实验推测,如果将作用在物体上的外力全部撤去,物体的'}, {'words': '速度将保持不变,因此力不是维持运动的原因.后来,笛卡儿等'}, {'words': '人进一步发展了关于惯性的思想.牛顿基于前人的工作,总结出'}, {'words': '了牛顿第一定律'}, {'words': '牛顿第一定律:任何物体,如果没有力作用在它上面,都将保'}, {'words': '牛顿第一定律'}, {'words': '持静止或匀速直线运动状态不变'}, {'words': '物体本身具有保持原来运动状态的性质,称为惯性.任何物'}, {'words': '惯性'}, {'words': '体都具有惯性,它是物体的基本属性.牛顿第一定律也称为惯性'}, {'words': '定律'}, {'words': '牛顿第一定律看似简单,其实非常深刻.倘若没有力作用于'}, {'words': '物体之上,静止的物体仍然静止是常见的、好理解的.但是要进'}, {'words': '步推论出运动的物体仍会保持原来的速度就需要抽象的思想'}, {'words': '可以想一想,我们周围是否存在着不受任何外力作用的物体呢?'}, {'words': '当然没有.要透过这些繁杂的现象,抽象出物体的本性绝不是'}, {'words': '件容易的事情.惯性定律恰恰为我们提供了一幅难以直接观察'}, {'words': '到的抽象图景,呈现出孤立粒子“自由运动”的画面,揭示出物体'}, {'words': '本身的一种属性—惯性.物体绝对不受外力的情况是不存在'}, {'words': '的,但是牛顿第一定律仍具有实际意义,可以用于物体所受外力'}, {'words': '小到可以忽略的极限情况.此外,当物体所受的各个力相互抵'}, {'words': '消,也就是合力为零时,物体的速度也会保持不变.除了惯性,牛'}]{'words': '到潮汐涨落的解释,从人造卫星、宇宙飞船的发射到水坝、桥梁的'}41

这里是可以直接通过字典的形式调用每个列表的元素了,这里就可以不用Re库了,比语音识别好做

if response:    print(response.json()['words_result_num'])    for i in range(response.json()['words_result_num']):        print(response.json()['words_result'][i]['words'])

结果:

411.2牛顿运动定律及其应用25到潮汐涨落的解释,从人造卫星、宇宙飞船的发射到水坝、桥梁的设计,牛顿运动定律都起着重要的作用.从牛顿发表他的运动定律到现在的三百多年间,牛顿运动定律有力地推进了人类对自然的认识.时至今日,物体的运动仍然吸引着人类的目光,不过我们已经登陆月球,有了空间探测器,我们已经解开了运动之谜1.2.1牛顿运动定律1687年,牛顿出版了《自然哲学的数学原理》(简称《原理》)书,将当时一些零散的物理学研究成果归纳在一个严密的逻辑体系之中,提出了牛顿运动定律和万有引力定律,并应用它们解释了地面上的物体、天体和流体等一些物体的运动,以他的物理授课录像:惯性质量与动量定律统一了天体与地面上物体的运动.《原理》是一部宏大的物理学经典巨著,它的问世标志着经典力学体系的建立,标志着人类已经掌握了机械运动的基本规律1.牛顿第一定律——惯性定律签在牛顿之前,伽利略(G. Galilei)就表达了惯性的概念.伽利文档:伽利略略基于实验推测,如果将作用在物体上的外力全部撤去,物体的速度将保持不变,因此力不是维持运动的原因.后来,笛卡儿等人进一步发展了关于惯性的思想.牛顿基于前人的工作,总结出了牛顿第一定律牛顿第一定律:任何物体,如果没有力作用在它上面,都将保牛顿第一定律持静止或匀速直线运动状态不变物体本身具有保持原来运动状态的性质,称为惯性.任何物惯性体都具有惯性,它是物体的基本属性.牛顿第一定律也称为惯性定律牛顿第一定律看似简单,其实非常深刻.倘若没有力作用于物体之上,静止的物体仍然静止是常见的、好理解的.但是要进步推论出运动的物体仍会保持原来的速度就需要抽象的思想可以想一想,我们周围是否存在着不受任何外力作用的物体呢?当然没有.要透过这些繁杂的现象,抽象出物体的本性绝不是件容易的事情.惯性定律恰恰为我们提供了一幅难以直接观察到的抽象图景,呈现出孤立粒子“自由运动”的画面,揭示出物体本身的一种属性—惯性.物体绝对不受外力的情况是不存在的,但是牛顿第一定律仍具有实际意义,可以用于物体所受外力小到可以忽略的极限情况.此外,当物体所受的各个力相互抵消,也就是合力为零时,物体的速度也会保持不变.除了惯性,牛

与原内容对比一下:

在这里插入图片描述
发现识别度还是相当高的,现在的问题在于:

  • 很多部分的内容是不需要的,例如上图标出来的页码、二维码描述、学科术语等;
  • 文字识别OCR原文换行,识别的结果就跟着换行了,一个段落、词与词之间被拆开了,影响语音的判断、后续操作,而且每个段落之后的句号识别不到,也不能根据句号作为划分段落的依据

解决办法:手动调整

Step4. 多个图像识别

"""通用文字识别"""# encoding:utf-8import requestsimport base64# client_id 为官网获取的AK, client_secret 为官网获取的SKhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=your client_id&client_secret=your client_secret'response = requests.get(host)if response:    print('百度AI开放平台Access Token:' + response.json()['access_token'])request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"access_token = response.json()['access_token']request_url = request_url + "?access_token=" + access_tokenheaders = {
'content-type': 'application/x-www-form-urlencoded'}total = 5for num in range(total): # 二进制方式打开图片文件 f = open('your path{}.jpg'.format(num+1), 'rb') img = base64.b64encode(f.read()) params = {
"image":img} response = requests.post(request_url, data=params, headers=headers) if response: print(response.json()['words_result_num']) for i in range(response.json()['words_result_num']): print(response.json()['words_result'][i]['words'])

结果:

百度AI开放平台Access Token:……411.2牛顿运动定律及其应用25到潮汐涨落的解释,从人造卫星、宇宙飞船的发射到水坝、桥梁的设计,牛顿运动定律都起着重要的作用.从牛顿发表他的运动定律到现在的三百多年间,牛顿运动定律有力地推进了人类对自然的认识.时至今日,物体的运动仍然吸引着人类的目光,不过我们已经登陆月球,有了空间探测器,我们已经解开了运动之谜1.2.1牛顿运动定律1687年,牛顿出版了《自然哲学的数学原理》(简称《原理》)书,将当时一些零散的物理学研究成果归纳在一个严密的逻辑体系之中,提出了牛顿运动定律和万有引力定律,并应用它们解释了地面上的物体、天体和流体等一些物体的运动,以他的物理授课录像:惯性质量与动量定律统一了天体与地面上物体的运动.《原理》是一部宏大的物理学经典巨著,它的问世标志着经典力学体系的建立,标志着人类已经掌握了机械运动的基本规律1.牛顿第一定律——惯性定律签在牛顿之前,伽利略(G. Galilei)就表达了惯性的概念.伽利文档:伽利略略基于实验推测,如果将作用在物体上的外力全部撤去,物体的速度将保持不变,因此力不是维持运动的原因.后来,笛卡儿等人进一步发展了关于惯性的思想.牛顿基于前人的工作,总结出了牛顿第一定律牛顿第一定律:任何物体,如果没有力作用在它上面,都将保牛顿第一定律持静止或匀速直线运动状态不变物体本身具有保持原来运动状态的性质,称为惯性.任何物惯性体都具有惯性,它是物体的基本属性.牛顿第一定律也称为惯性定律牛顿第一定律看似简单,其实非常深刻.倘若没有力作用于物体之上,静止的物体仍然静止是常见的、好理解的.但是要进步推论出运动的物体仍会保持原来的速度就需要抽象的思想可以想一想,我们周围是否存在着不受任何外力作用的物体呢?当然没有.要透过这些繁杂的现象,抽象出物体的本性绝不是件容易的事情.惯性定律恰恰为我们提供了一幅难以直接观察到的抽象图景,呈现出孤立粒子“自由运动”的画面,揭示出物体本身的一种属性—惯性.物体绝对不受外力的情况是不存在的,但是牛顿第一定律仍具有实际意义,可以用于物体所受外力小到可以忽略的极限情况.此外,当物体所受的各个力相互抵消,也就是合力为零时,物体的速度也会保持不变.除了惯性,牛4426第1章质点力学顿第一定律还表明,力是使物体改变速度的那种作用,或者说力是使物体具有加速度的原因研究运动首先要选择参考系,牛顿第一定律并非在所有参考系中都成立,根据牛顿第一定律,可以将参考系分为两类,惯性参考系和非惯性参考系.如果我们选定了某个参考系,牛顿第惯性参考系定律在其中成立,那么这个参考系就被称为惯性参考系,牛顿第定律是判断一个参考系是否为惯性系的标准.对于某个选定的参考系来说,它是否是惯性参考系,从根本上讲要依据观察和实验,通过相关的实验,判断牛顿第一定律在其中是否成立.目前大量的实验表明:在很高的实验精度内,地球是惯性参考系如果有一个参考系是固定在地面上的,那么它是惯性系.研究地面附近物体的运动时,例如,研究抛体的运动,可以认为地球是惯性系.通常实验室是固定在地面上的,因此实验室参考系或坐标系是惯性系·如果要研究人造卫星在空间的运动,那么,就不能将地球参考系视为惯性系,而需要将地心参考系作为惯性系.地心参考系的原点位于地心,坐标轴指向恒星.实验表明,地心参考系是比地球参考系精度更高的惯性系.比地心参考系精度还高的惯性系是太阳参考系,它的原点在太阳中心,坐标轴指向其他恒星.一旦涉及天体和恒星的运动,可以将太阳参考系作为惯性系使用.进一步追问,是否有比太阳参考系精度更高的惯性参考系呢?是,答案是肯定的,不过在我们的课程中很少用到.这样,我们就明确了常用的惯性系,它们是地球参考系、地心参考系和太阳参考系.判断一个参考系是否为惯性系还有一个标准,这就是:相对于惯性系做匀速直线运动的参考系,依然是惯性系那些相对于惯性参考系加速运动的参考系,一定不是惯性系,它非惯性系们被称为非惯性系.直线轨道上加速行驶的火车,弯道上飞驰的赛车,游乐场中旋转的木马都是非惯性系,这样,我们就有了判定惯性系和非惯性系的基本方法牛顿第一定律阐述了物体在不受外力作用条件下的运动,而物体在外力作用下的运动规律由牛顿第二定律给出.2.牛顿第二定律牛顿第二定律牛顿第二定律:物体的加速度a与它所受的合外力F方向相同;其加速度的大小与物体的质量m成反比,与物体所受合外力的大小成正比.数学表达式为,F或F=ma(1-59)牛顿第二定律适用于惯性参考系.上式中的质量m也被称为惯性质量惯性质量,它是物体惯性大小的量度,也就是物体抵抗被加速能3712牛顿运动定律及其应用27力的量度.如果物体的运动速度远远小于光在真空中的速度,那口裂回么质量可视为常量,不随运动发生变化.在爱因斯坦的狭义相对论中,质量与运动速度相关,两者的定量关系为0(1-60)文档:爱因斯坦式中,m0为物体静止时的质量,称为静质量;m是物体以速度运动时的质量,称为动质量;c是光在真空中的速率.由相对论的质量公式可以得到,物体的运动速度增大,质量也随之增大.不过,若v

小结

基本实现了文本识别功能,但显示了很多没必要的内容,以及公式显示很不友好,以及换行问题,总而言之需要之后手动排版

转载地址:http://vgvrn.baihongyu.com/

你可能感兴趣的文章
程序员修神之路--容器技术为什么会这么流行(记得去抽奖)
查看>>
[ASP.NET Core 3框架揭秘] 异步线程无法使用IServiceProvider?
查看>>
.NET Core 3.0之深入源码理解HealthCheck(一)
查看>>
收藏!推荐12个超实用的Visual Studio插件
查看>>
2020年你应该学习 .Net Core
查看>>
[译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
查看>>
.NETCore3.1中的Json互操作最全解读-收藏级
查看>>
【实战 Ids4】║ 给授权服务器加个锁——HTTPS配置
查看>>
2020年了,再不会Https就老了
查看>>
Kubernetes,多云和低代码数据科学:2020年最热门的数据管理趋势
查看>>
.NET Core 3.1之深入源码理解HealthCheck(二)
查看>>
C# WPF 表单更改提示
查看>>
【原创】StackOverflow 20万关注的问题:如何实现异步Task超时的处理?
查看>>
.NET Core 3.1通用主机原理及使用
查看>>
UnitTest in .NET(Part 1)
查看>>
CAP 3.0 版本正式发布
查看>>
Xamarin.Forms弹出对话框插件
查看>>
UnitTest in .NET(Part 4)
查看>>
大量SQL的解决方案——sdmap
查看>>
与其每天重复,不如试着构建「正反馈闭环」
查看>>