Python实现PDF转Words(文字提取)

起因

最近报了一个PMP的培训班,然后呢,给我的一些资料是PDF文档,且不可以复制,那么,我自己的学习整理的时候,就有点不方便,所以想把PDF中的文字提取出来。
犹记得还在读书的时候,老师为了将PDF转WORD让我们找各种各样的工具,最后经过一番折腾,目的是达成了,但是安装了一个很大的工具,这工具还不好找,且是国外的,每次跑起来,我的电脑都呼呼的响,现在好啦,曾经想都不敢想的事情,现在轻轻松松就做到了。

百度AI开放平台

这个你值得了解一下,有免费的接口服务,做一些日常使用的小工具,足够啦

  1. 注册账号登录,找到文字识别,创建一个应用

  1. 创建应用之后,你分别会得到AppID,API Key,Secret Key这三个值

  2. 然后找到文件识别的SDK文档

  3. SDK提供了各种语言的版本,但是我会优先选择Python,为什么了?快啊!方便啊!

pip install baidu-aip

  1. 看了SDK之后,你会发现它只支持识别图片,莫慌,办法我已经帮你想好了,直接访问这个网址[戳我](看这个网址的后缀,应该是用.Net写的),就可以在线将PDF转成图片格式,比如Jpeg

  2. 然后,就是直接上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+'\n')


直接运行,输入文件夹路径,识别的内容会输出到result.txt的文件中,搞定!

posted @ 2020-06-15 23:28  dwBurning  阅读(3565)  评论(0编辑  收藏  举报