File size: 2,861 Bytes
1cf3d00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# !/usr/bin/env python
# -*-coding:utf-8 -*-

"""
# File       : myself_train_model.py
# Time       :2023/8/21 9:25
# Author     :小吕同学
"""

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import gradio as gr
import os


class xiaolv_ocr_model():

    def __init__(self):
        model_small = r"./output_small"
        model_big = r"./output_big"
        self.ocr_recognition_small = pipeline(Tasks.ocr_recognition, model=model_small)
        self.ocr_recognition1_big = pipeline(Tasks.ocr_recognition, model=model_big)


    def run(self,pict_path,moshi = "small", context=[]):
        pict_path = pict_path.name
        context = [pict_path]

        if moshi == "small":
            result = self.ocr_recognition_small(pict_path)
        else:
            result = self.ocr_recognition1_big(pict_path)

        context += [str(result['text'][0])]
        responses = [(u, b) for u, b in zip(context[::2], context[1::2])]
        print(f"识别的结果为:{result}")
        os.remove(pict_path)
        return responses,context




if __name__ == "__main__":
    pict_path = r"C:\Users\admin\Desktop\图片识别测试\企业微信截图_16895911221007.png"
    ocr_model = xiaolv_ocr_model()
    # ocr_model.run(pict_path)



    with gr.Blocks() as demo:
        gr.HTML("""<h1 align="center">常见验证码识别——小吕</h1>""")
        with gr.Tab("验证码模型"):
            gr.Markdown("""
            #### 专门识别常见验证码的模型,训练模型有2个:
            * 1.**small**:训练数据大小为700MB,约8.4万张验证码图片,训练轮次27轮,最终的精度将近100%;
            * 2.**big**:训练数据大小为11G,约135万个验证码图片,训练轮次1轮,最终的精度将近93.95%;
            #### 训练验证码图片包括:
            * 类型:1. 纯数字型;2. 数字+字母型;3.纯字母型(大小写)
            * 长度:4位、5位、6位
            """)
            with gr.Row():
                with gr.Column():
                    select_types = gr.Radio(label="模型类型选择", choices=["small", "big"], value="small")
                    img_input = gr.File(label='输入图像,目前支持图片格式(png\jpg等),建议使用png格式。',file_types=[".jpg",".jpeg",".png"])
                with gr.Column():
                    chatbot = gr.Chatbot([])
            with gr.Row():
                btn_submit = gr.Button(value="一键识别")


            state = gr.State([])

            btn_submit.click(fn=ocr_model.run, inputs=[img_input, select_types], outputs=[chatbot, state])


            gr.Markdown("""
            #### 后续计划:
            1. 推出专门识别手机号码和邮箱的模型
            """)



    demo.launch(show_error=True,server_name='192.168.8.173')