简单的文字识别
This commit is contained in:
parent
67b54ce2b6
commit
00a984ac61
5
main.py
5
main.py
@ -1,6 +1,6 @@
|
||||
import pinPicture
|
||||
from PIL import Image
|
||||
import tkinter as tk
|
||||
import numpy as np
|
||||
|
||||
import pyautogui
|
||||
import keyboard
|
||||
@ -14,9 +14,6 @@ def capture_screen():
|
||||
root.mainloop()
|
||||
|
||||
|
||||
|
||||
# 监听特定快捷键,这里假设是Ctrl+Alt+S
|
||||
keyboard.add_hotkey('F7', capture_screen)
|
||||
|
||||
# 保持程序运行,持续监听快捷键
|
||||
keyboard.wait()
|
||||
@ -2,13 +2,15 @@ import io
|
||||
import math
|
||||
import tkinter as tk
|
||||
import win32clipboard
|
||||
from PIL import Image, ImageTk, ImageChops, ImageDraw, ImageGrab
|
||||
import threading
|
||||
from PIL import Image, ImageTk, ImageDraw
|
||||
import numpy as np
|
||||
import easyocr
|
||||
|
||||
|
||||
class PinPicture(tk.Frame):
|
||||
def __init__(self, image, master=None):
|
||||
super().__init__(master)
|
||||
self.detectBtn = None
|
||||
self.pinBtn = None
|
||||
self.lineBtn = None
|
||||
self.arrowBtn = None
|
||||
@ -34,9 +36,10 @@ class PinPicture(tk.Frame):
|
||||
self.drawing = False
|
||||
self.drawMode = False
|
||||
self.color = "red"
|
||||
self.image = image
|
||||
if image.mode != "RGBA":
|
||||
image = image.convert("RGBA")
|
||||
self.image = image.convert("RGBA")
|
||||
else:
|
||||
self.image = image
|
||||
self.create_window()
|
||||
self.penWidth = 3
|
||||
self.arrowSize = 10
|
||||
@ -44,7 +47,6 @@ class PinPicture(tk.Frame):
|
||||
# 创建窗口
|
||||
def create_window(self):
|
||||
self.master.overrideredirect(True)
|
||||
self.master.attributes('-transparentcolor', 'white')
|
||||
self.master.config(bg='white')
|
||||
self.master.attributes('-topmost', True)
|
||||
self.canvas = tk.Canvas(self.master, height=self.image.height, width=self.image.width)
|
||||
@ -53,6 +55,8 @@ class PinPicture(tk.Frame):
|
||||
self.arrowBtn = tk.Button(text='箭头', command=self.set_arrow)
|
||||
self.lineBtn = tk.Button(text='直线', command=self.set_line)
|
||||
self.pinBtn = tk.Button(text='确定', command=self.pin_mode_event)
|
||||
self.drawModeBtn = tk.Button(text="编辑", command=self.draw_mode_event)
|
||||
self.detectBtn = tk.Button(text="识别", command=self.detect)
|
||||
|
||||
self.master.bind("<Escape>", self.close)
|
||||
self.master.bind("<Enter>", self.enter_canvas)
|
||||
@ -69,7 +73,7 @@ class PinPicture(tk.Frame):
|
||||
def on_save(self, event):
|
||||
output = io.BytesIO()
|
||||
self.image.convert("RGB").save(output, "BMP")
|
||||
data = output.getvalue()[14:] # BMP 文件头前14字节
|
||||
data = output.getvalue()[14:] # BMP 文件头前14bit
|
||||
output.close()
|
||||
win32clipboard.OpenClipboard()
|
||||
try:
|
||||
@ -112,16 +116,15 @@ class PinPicture(tk.Frame):
|
||||
# 鼠标进入
|
||||
def enter_canvas(self, event):
|
||||
self.canvas.focus_set()
|
||||
if self.drawModeBtn is None and not self.drawMode:
|
||||
self.drawModeBtn = tk.Button(text="编辑", command=self.draw_mode_event)
|
||||
self.drawModeBtn.pack(side=tk.TOP, expand=True)
|
||||
elif not self.drawMode:
|
||||
if not self.drawMode:
|
||||
self.drawModeBtn.pack(side=tk.TOP, expand=True)
|
||||
self.detectBtn.pack(side=tk.TOP, expand=True)
|
||||
|
||||
# 鼠标离开
|
||||
def leave(self, event):
|
||||
if self.drawModeBtn is not None and not self.drawMode:
|
||||
self.drawModeBtn.pack_forget()
|
||||
self.detectBtn.pack_forget()
|
||||
|
||||
# 进入编辑模式
|
||||
def draw_mode_event(self):
|
||||
@ -262,7 +265,7 @@ class PinPicture(tk.Frame):
|
||||
cosa = (x2 - x1) / l
|
||||
sina = (y2 - y1) / l
|
||||
d = self.arrowSize * (sina + cosa)
|
||||
if (sina < cosa):
|
||||
if sina < cosa:
|
||||
xa = x2 - d
|
||||
ya = y2 + math.sqrt(2 * self.arrowSize * self.arrowSize - d * d)
|
||||
xb = x2 - math.sqrt(2 * self.arrowSize * self.arrowSize - d * d)
|
||||
@ -291,3 +294,11 @@ class PinPicture(tk.Frame):
|
||||
self.image = Image.alpha_composite(self.image, self.pad)
|
||||
self.pad = Image.new('RGBA', self.image.size)
|
||||
self.drawPad = ImageDraw.Draw(self.pad)
|
||||
|
||||
def detect(self):
|
||||
reader = easyocr.Reader(['ch_sim', 'en'])
|
||||
result = reader.readtext(np.array(self.image), detail=0)
|
||||
text = ''
|
||||
for str in result:
|
||||
text += str
|
||||
print (text)
|
||||
|
||||
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
Loading…
Reference in New Issue
Block a user