zoukankan      html  css  js  c++  java
  • 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+'
    ')
    
    
    

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

  • 相关阅读:
    GLSL逐像素光照 【转】
    GLSL逐顶点光照[转]
    GLSL 基础量定义 【转】
    GLSL纹理贴图 【转】
    NormalMap 贴图 [转]
    glsl镜面水倒影的实现[转]
    C#调用C++Dll封装时遇到的一系列问题【转】
    在C#中使用C++编写的类——用托管C++进行封装[转]
    GEOS 使用的例子
    昌平区2015年义务教育阶段入学工作意见 (含非京籍)
  • 原文地址:https://www.cnblogs.com/dwBurning/p/pdftowords.html
Copyright © 2011-2022 走看看