起因
最近報了一個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+'\n')
直接運行,輸入文件夾路徑,識別的內容會輸出到result.txt的文件中,搞定!