近在学习的过程中发现书中有好多知识点,但本人过于懒惰,不爱翻书、记笔记,于是我就想到了为何不用手机将内容拍下来,然后直接生成word文件。本菜鸟接下来就教大家如何用百度提供的图像识别接口来完成图像文字的提取。
文字识别OCR:https://ai.baidu.com/ai-doc/OCR/Ek3h7yeiq
首先,需要两个模块:baidu-aip、python-docx。如果没有,可以直接用pip命令安装。
pip install baidu-aip
pip install python-docx
其次,导入相关的库,新建对象并设置相关参数。
from aip import AipOcr
from docx import Document
"""相关参数"""
APP_ID = 'APP_ID'
API_KEY = 'API_KEY'
SECRET_KEY = 'SECRET_KEY'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
这里的APP_ID、API_KEY、SECRET_KEY通过链接https://login.bce.baidu.com/?redirect=https%3A%2F%2Fconsole.bce.baidu.com%2F%3Ffromai%3D1#/aip/overview
用百度账号登录并创建自己的图像识别应用获取。(免费)
然后、获取图片信息,并配置相关属性
网络图片
imageurl = "图片链接"
本地图片
imagepath = "图片路径"
配置相关属性,并传入参数。
""" 如果有可选参数 """
options = {}#配置字典
options["language_type"] = "CHN_ENG"#识别文字类型
options["detect_direction"] = "true"#是否检测图片的朝向
options["detect_language"] = "true"#是否检测语言
options["probability"] = "true"#是否返回置信度
"""传入参数"""
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
再然后、读取图片
""" 读取图片 """
def get_file_content(filepath):
with open(filepath, 'rb') as fp:
return fp.read() # 返回文件读取对象
image = get_file_content('example.jpg')
""" 带参数调用通用文字识别, 图片参数为本地图片 """
result = client.basicGeneral(image, options)
""" 带参数调用通用文字识别, 图片参数为远程url图片 """
result = client.basicGeneralUrl(url, options)
结果result为字典类型。
最后,将返回的结果导入word文件
document = Document('word文件路径.docx') # 此处参数可以省略,如省略会创建新的word文件
for i in result["words_result"]:
paragraph = document.add_paragraph(i["words"])
document.save('文件保存路径.docx') # 注意前后一致
<<<<<<<<<<<我是分割线>>>>>>>>>>>>>>
完整代码及实例:
from aip import AipOcr
from docx import Document
"""相关参数"""
APP_ID = '用你自己的'
API_KEY = '用你自己的'
SECRET_KEY = '用你自己的'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read() # 返回文件读取对象
jpg_name = r'F:用你自己的\test.jpg'
image = get_file_content(jpg_name)
""" 如果有可选参数 """
options = {} # 配置字典
options["language_type"] = "CHN_ENG" # 识别文字类型
options["detect_direction"] = "true" # 是否检测图片的朝向
options["detect_language"] = "true" # 是否检测语言
options["probability"] = "true" # 是否返回置信度
""" 带参数调用通用文字识别, 图片参数为本地图片 """
result = client.basicGeneral(image, options)
print("提取图片的文字:" )
document = Document(r'F:\用你自己的\text.docx')
for i in result["words_result"]:
print(i["words"])
paragraph = document.add_paragraph(i["words"])
document.save(r'F:\用你自己的\text.docx')