吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 859|回复: 5
收起左侧

[求助] python计数方面的一些问题

[复制链接]
fake 发表于 2022-8-20 08:47
[Python] 纯文本查看 复制代码
import os
import time
# pip install baidu-aip 来进行安装
from aip import AipOcr
# 新建一个AipOcr对象
# appId apiKey secretKey 需要在[url]https://cloud.baidu.com/product/ocr.html[/url]免费开通文字识别服务后获取
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([s for s in words_list if '施工区域' in s])
            l2 = str([s for s in words_list if '施工内容' in s])
            l3 = l1[7:-2]
            l4 = l2[7:-2]
            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:30
本帖最后由 grekevin 于 2022-8-20 11:31 编辑

个人感觉你这个img_to_str()函数应该拆成三个函数
一个专门进行图片内容识别的函数A,返回一定格式的识别到的内容,比如识别到文字的列表
然后再写专门处理识别内容的方法B,处理后最后返回需要的最终目标内容
最后写一个重命名函数C
这样到时候业务有变动,就可以单独修改某一个函数就行
以上仅作为建议

如果你要更换识别图片的库,也只需要修改img_to_str识别那部分的代码,其他都不用改动的

你可以定义一个全局变量,重命名一个图片就让这个全局变量+1,最后打印这个全局变量就行了
JiechaoWu 发表于 2022-8-20 11:45
可以了解一下tqdm  包在for循环上可以直接打印出进度条
本地部署ocr服务的话  不清楚还能不能用aipocr库调用  我这边使用过的本地ocr服务一般提供一个接受文件或者是图片base64编码的接口 自己用requests库按照接口格式进行调用即可
 楼主| fake 发表于 2022-8-20 11:58
grekevin 发表于 2022-8-20 11:30
个人感觉你这个img_to_str()函数应该拆成三个函数
一个专门进行图片内容识别的函数A,返回一定格式的识别 ...

谢谢大佬。
 楼主| fake 发表于 2022-8-20 11:59
JiechaoWu 发表于 2022-8-20 11:45
可以了解一下tqdm  包在for循环上可以直接打印出进度条
本地部署ocr服务的话  不清楚还能不能用aipocr库调 ...

好的,谢谢大佬。
头像被屏蔽
DKsnail 发表于 2022-8-20 12:45
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表