python做一个识别图片中文字的程序,运行程序后显示窗口,窗口上部分中,左侧显示图片,右侧先后i识别后的文字;下部分有几个按钮,分别是识别,复制,键盘上按Ctrl+X截图,图片显示上部分左侧,点击识别按钮,开始识别文字,最终结果显示在右侧,,点击复制按钮,可以复制结果到剪贴板。请给 完整代码
时间: 2024-03-12 08:44:34 浏览: 20
好的,以下是一个简单的基于Python的识别图片中文字的程序,实现了你所描述的功能:
```python
import tkinter as tk
import pytesseract
from PIL import ImageGrab, ImageTk
pytesseract.pytesseract.tesseract_cmd = r'<path to tesseract.exe>' # 修改为你的tesseract.exe路径
class OCR_GUI:
def __init__(self, master):
self.master = master
self.master.title("图片文字识别")
self.master.geometry("800x600")
# 图片显示区域
self.image_frame = tk.Frame(self.master, width=400, height=400)
self.image_frame.pack(side=tk.TOP, padx=10, pady=10)
self.image_label = tk.Label(self.image_frame)
self.image_label.pack(side=tk.LEFT)
self.text_frame = tk.Frame(self.master, width=400, height=400)
self.text_frame.pack(side=tk.TOP, padx=10, pady=10)
# 文字显示区域
self.text_label = tk.Label(self.text_frame, text="文字识别结果:")
self.text_label.pack(side=tk.TOP, pady=10)
self.text_box = tk.Text(self.text_frame, width=50, height=20)
self.text_box.pack(side=tk.TOP)
# 按钮区域
self.button_frame = tk.Frame(self.master, width=400, height=50)
self.button_frame.pack(side=tk.TOP, padx=10, pady=10)
self.recognize_button = tk.Button(self.button_frame, text="识别", command=self.recognize_text)
self.recognize_button.pack(side=tk.LEFT, padx=10)
self.copy_button = tk.Button(self.button_frame, text="复制", command=self.copy_text)
self.copy_button.pack(side=tk.LEFT, padx=10)
self.screenshot_button = tk.Button(self.button_frame, text="截图", command=self.take_screenshot)
self.screenshot_button.pack(side=tk.LEFT, padx=10)
def recognize_text(self):
img = ImageGrab.grabclipboard()
if img is None:
self.text_box.insert(tk.END, "剪贴板中没有图片!")
return
img = img.convert("L")
img_text = pytesseract.image_to_string(img, lang="chi_sim")
self.text_box.delete(1.0, tk.END)
self.text_box.insert(tk.END, img_text)
def copy_text(self):
text = self.text_box.get(1.0, tk.END)
self.master.clipboard_clear()
self.master.clipboard_append(text)
def take_screenshot(self):
self.master.withdraw()
img = ImageGrab.grab()
self.image_label.config(width=img.width, height=img.height)
img_tk = ImageTk.PhotoImage(img)
self.image_label.config(image=img_tk)
self.image_label.image = img_tk
self.master.deiconify()
if __name__ == "__main__":
root = tk.Tk()
app = OCR_GUI(root)
root.mainloop()
```
需要注意的几点:
1. 代码中的 `<path to tesseract.exe>` 需要修改为你的tesseract.exe路径。
2. 代码中的截图功能需要在键盘上按下 `Ctrl+X` 来触发,因此需要将程序窗口放在前台并激活窗口后才能生效。
3. 由于使用的是 `pytesseract` 库,因此需要先安装该库,可以通过 `pip install pytesseract` 来进行安装。同时,需要安装 Tesseract OCR 引擎(可通过官网下载),并将其加入系统环境变量中。
4. 代码中使用了 `PIL` 库和 `tkinter` 库来进行图片处理和 GUI 界面的设计。