有时候有些好的文章想复制保存下来,手机页面又有限制,复制不了,于是就只能截图。等保存了一堆截图,我们再通过python批量识别图片中文字保存至word文档里。
这里我们介绍用阿里云识别的方法,识别准确率更高(需要提前申请阿里云图片文字识别的id和密钥),具体代码如下:
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkocr.request.v20191230.RecognizeCharacterRequest import RecognizeCharacterRequest
from viapi.fileutils import FileUtils
from docx import Document
your_AccessKey_id = 'LTAI5tNJTKu97NsXfwva5sd7'
your_AccessKey_Secret = 'ZSXSTo3RDfF0gnZrdmyKhILyY5GtHJ'
folder_path = r'F:\Python学习\test\图片文字识别\待识别照片' # 文件夹路径
output_word_path = r'F:\Python学习\test\图片文字识别\文档.docx' # 输出Word文档路径
# 初始化
file_utils = FileUtils(your_AccessKey_id, your_AccessKey_Secret)
client = AcsClient(your_AccessKey_id, your_AccessKey_Secret, 'cn-shanghai')
doc = Document() # 创建一个Word文档对象
# 遍历文件夹中的文件
for filename in os.listdir(folder_path):
if filename.endswith('.jpg') or filename.endswith('.png'): # 只处理图片文件
file_path = os.path.join(folder_path, filename)
# 生成URL
oss_url = file_utils.get_oss_url(file_path, os.path.splitext(filename)[1][1:], True)
# OCR设置
request = RecognizeCharacterRequest()
request.set_accept_format('json')
request.set_ImageURL(oss_url)
request.set_MinHeight(8)
request.set_OutputProbability(False)
# OCR
response = client.do_action_with_exception(request)
# 解析
node_list = eval(str(response, 'utf-8'))["Data"]["Results"]
# 将识别结果添加到Word文档中
doc.add_heading(filename, level=1) # 添加文件名作为标题
for i in node_list:
doc.add_paragraph(i['Text'])
doc.add_page_break() # 添加分页符
# 保存Word文档
doc.save(output_word_path)