python计数方面的一些问题
import osimport time
# pip install baidu-aip 来进行安装
from aip import AipOcr
# 新建一个AipOcr对象
# appId apiKey secretKey 需要在https://cloud.baidu.com/product/ocr.html免费开通文字识别服务后获取
config = {
'appId': 'XXXXXXXX',
'apiKey': 'XXXXXXXX',
'secretKey': 'XXXXXXXX'
}
client = AipOcr(**config)
pic_dir = r"D:/test/4/"
# 读取图片
def get_file_content(file_path):
with open(file_path, 'rb') as fp:
return fp.read()
# 识别图片里的文字
def img_to_str(image_path):
image = get_file_content(image_path)
# 调用通用文字识别, 图片参数为本地图片
result = client.basicAccurate(image)
# 结果拼接返回
words_list = []
if 'words_result' in result:
if len(result['words_result']) > 0:
for w in result['words_result']:
words_list.append(w['words'])
print(words_list)
#取施工区域和施工内容后面的字符后进行组合
l1 = str()
l2 = str()
l3 = l1
l4 = l2
l5 = l3 + l4
file_name = get_code(words_list, 4)
if file_name == None:
file_name = 'None' + '-' + str(time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()))
print(file_name)
try:
os.rename(image_path, pic_dir + l5.replace("/", "") + '.jpg')
except:os.rename(image_path, pic_dir + l5.replace("/", "") +"1"+ '.jpg')
# 获取字符串列表中最长的字符串
def get_longest_str(str_list):
return max(str_list, key=len)
# 获取字符串列表中7位服务编号、11位快速服务代码
def get_code(str_list, length):
code_num = ''
for str in str_list:
if len(str.strip()) == length:
code_num = str
return code_num
return None
# 遍历某个文件夹下所有图片
def query_picture(dir_path):
pic_path_list = []
for filename in os.listdir(dir_path):
pic_path_list.append(dir_path + filename)
return pic_path_list
if __name__ == '__main__':
pic_list = query_picture(pic_dir)
if len(pic_list) > 0:
for i in pic_list:
img_to_str(i)
怎么才能实现能看到我处理了多少张图片呢?还有这个百度的OCR有次数限制,如果我换成本地识别代码会不会大范围修改呢?求大佬解答 本帖最后由 grekevin 于 2022-8-20 11:31 编辑
个人感觉你这个img_to_str()函数应该拆成三个函数
一个专门进行图片内容识别的函数A,返回一定格式的识别到的内容,比如识别到文字的列表
然后再写专门处理识别内容的方法B,处理后最后返回需要的最终目标内容
最后写一个重命名函数C
这样到时候业务有变动,就可以单独修改某一个函数就行
以上仅作为建议
如果你要更换识别图片的库,也只需要修改img_to_str识别那部分的代码,其他都不用改动的
你可以定义一个全局变量,重命名一个图片就让这个全局变量+1,最后打印这个全局变量就行了
可以了解一下tqdm包在for循环上可以直接打印出进度条
本地部署ocr服务的话不清楚还能不能用aipocr库调用我这边使用过的本地ocr服务一般提供一个接受文件或者是图片base64编码的接口 自己用requests库按照接口格式进行调用即可 grekevin 发表于 2022-8-20 11:30
个人感觉你这个img_to_str()函数应该拆成三个函数
一个专门进行图片内容识别的函数A,返回一定格式的识别 ...
谢谢大佬。 JiechaoWu 发表于 2022-8-20 11:45
可以了解一下tqdm包在for循环上可以直接打印出进度条
本地部署ocr服务的话不清楚还能不能用aipocr库调 ...
好的,谢谢大佬。
页:
[1]