起因
最近报了一个PMP的培训班,然后呢,给我的一些资料是PDF文档,且不可以复制,那么,我自己的学习整理的时候,就有点不方便,所以想把PDF中的文字提取出来。
犹记得还在读书的时候,老师为了将PDF转WORD让我们找各种各样的工具,最后经过一番折腾,目的是达成了,但是安装了一个很大的工具,这工具还不好找,且是国外的,每次跑起来,我的电脑都呼呼的响,现在好啦,曾经想都不敢想的事情,现在轻轻松松就做到了。
百度AI开放平台
这个你值得了解一下,有免费的接口服务,做一些日常使用的小工具,足够啦
- 注册账号登录,找到文字识别,创建一个应用
-
创建应用之后,你分别会得到AppID,API Key,Secret Key这三个值
-
然后找到文件识别的SDK文档
-
SDK提供了各种语言的版本,但是我会优先选择Python,为什么了?快啊!方便啊!
pip install baidu-aip
-
看了SDK之后,你会发现它只支持识别图片,莫慌,办法我已经帮你想好了,直接访问这个网址[戳我](看这个网址的后缀,应该是用.Net写的),就可以在线将PDF转成图片格式,比如Jpeg
-
然后,就是直接上Python代码了,一般生成的图片文件名:
061416404698_0第五章模拟题项目范围管理_1.Jpeg
061416404698_0第五章模拟题项目范围管理_2.Jpeg
061416404698_0第五章模拟题项目范围管理_10.Jpeg
Python遍历文件夹之后得到的列表顺序是这样子的
['061416404698_0第五章模拟题项目范围管理_1.Jpeg','061416404698_0第五章模拟题项目范围管理_10.Jpeg','061416404698_0第五章模拟题项目范围管理_2.Jpeg']
所以,要对文件名做一个排序
import os
from aip import AipOcr
""" 你的 APPID AK SK """
APP_ID = '换成你申请的AppID'
API_KEY = '换成你申请的API Kye'
SECRET_KEY = '换成你申请的Secret Key'
words_fiilter = ['这里例举你要过滤掉的一些字符',]
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
""" 删除之前的识别结果 """
if os.path.exists("result.txt"):
os.remove("result.txt")
directory = input("请输入文件夹路径:")
for root, dirs, files in os.walk(directory): # 开始遍历文件
# 遍历文件
# 将文件重新排序
files.sort(key=lambda x: int(x.split('_')[2].split('.')[0]))
for f in files:
src = os.path.join(root, f)
image = get_file_content(src)
""" 调用通用文字识别, 图片参数为本地图片 """
result = client.basicGeneral(image)
words_result = result["words_result"]
for words in words_result:
content = words["words"]
if content in words_fiilter: # 过滤掉 页眉 页脚 和水印等信息
continue
print(content)
with open("result.txt", 'a', encoding='utf-8') as f:
f.write(content+'
')
直接运行,输入文件夹路径,识别的内容会输出到result.txt的文件中,搞定!