吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1669|回复: 60
收起左侧

[Python 原创] OCR图像文本识别

  [复制链接]
cqarray 发表于 2024-11-15 10:33
本帖最后由 cqarray 于 2024-11-15 10:37 编辑

闲来无事,跟着教程写个图片文本内容提取工具

import os
import pytesseract
from PIL import Image
from tkinter import Tk, filedialog, Button, Text, END, Menu, Frame,messagebox,Label,PhotoImage
from datetime import datetime
import tkinter as tk

content_text = ""

def select_folder():
    root = Tk()
    root.withdraw()  # 隐藏主窗口
    file_path = filedialog.askopenfilename(filetypes=[("Image files", "*.jpg *.png")])  # 打开文件选择对话框
    img = PhotoImage(file=file_path)
    return file_path

def show_popup(event):
    # 显示弹出菜单
    popup_menu.post(event.x_root, event.y_root)

def copy_text(event=None):
    # 获取选中的文本
    selected_text = text_box.selection_get()
    # 将选中的文本复制到剪贴板
    text_box.clipboard_clear()
    text_box.clipboard_append(selected_text)

def process_images(file_path):
    img = Image.open(file_path).convert('L')
    text = pytesseract.image_to_string(img, lang='chi_sim')
    return text

def on_button_click():
    file_path = select_folder()
    if file_path:
        text = process_images(file_path)
        if text:
            # 将识别出的文本显示在文本框中
            text_box.delete(1.0, END)  # 清空文本框
            text_box.insert(END, text)  # 插入新文本
        else:
            text_box.delete(1.0, END)  # 清空文本框
            text_box.insert(END, '扫描文本内容为空')  # 插入新文本
    else:
        text_box.delete(1.0, END)  # 清空文本框
        text_box.insert(END, '未选择图片文件')  # 插入新文本

def clear_text():
    text_box.delete(1.0, END)  # 清空文本框

def save_content():
    text = text_box.get('1.0', 'end-1c')  # 获取文本框内容
    if text:
        # 获取当前时间并格式化为字符串
        current_time = datetime.now().strftime("%Y%m%d_%H%M%S")

        # 定义文件名和目录
        directory = "log"
        file_name = f"{current_time}.txt"
        file_path = os.path.join(directory, file_name)

        # 获取文件的绝对路径
        root_file_path = os.path.abspath(file_name)

        # 确保目录存在
        os.makedirs(directory, exist_ok=True)

        # 尝试将文本内容写入到以时间命名的文件中
        try:
            with open(file_path, 'w', encoding='utf-8') as file:
                file.write(text)
            # 弹出信息对话框
            messagebox.showinfo("保存成功", f"本地文件路径为:{root_file_path}")
        except Exception as e:
            # 弹出警告对话框
            messagebox.showwarning("Save Error", f"Failed to save the content: {e}")
    else:
        print("has no content to save.")

if __name__ == "__main__":
    # 创造GUI界面
    root = Tk()
    root.title("OCR 图像文本识别")
    # 设置窗口大小
    root.geometry("700x550")

    # 定义按钮
    open_button = Button(root, text="打开图像", command=on_button_click)
    open_button.pack(pady=20)

    # 创建按钮框架
    content_frame = Frame(root)
    content_frame.pack(fill=tk.BOTH, expand=True)

    # 定义文本框
    text_box = Text(content_frame, wrap='word', width=70, height=20, border=0)
    text_box.pack(side="left", fill=tk.BOTH, expand=True, padx=5)

    # 创建按钮框架
    button_frame = Frame(root)
    button_frame.pack(pady=10)

    # 定义清空按钮和保存按钮,并放在同一行显示
    clear_button = Button(button_frame, text="清空内容", command=clear_text)
    clear_button.pack(side="left", padx=5)

    save_button = Button(button_frame, text="保存为TXT", command=save_content)
    save_button.pack(side="left", padx=5)

    # 创建弹出菜单
    popup_menu = Menu(root, tearoff=0)
    popup_menu.add_command(label="Copy", command=copy_text)

    # 绑定鼠标右键点击事件到show_popup函数
    text_box.bind("<Button-3>", show_popup)

    #运行打包EXE命令:pyinstaller --onefile --noconsole ocr_script.py 

    root.mainloop()


运行截图
image.png image.png image.png

免费评分

参与人数 7吾爱币 +9 热心值 +7 收起 理由
laozhang4201 + 1 + 1 热心回复!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yangshisan + 1 + 1 向楼主学习
lhh7 + 1 + 1 谢谢@Thanks!
yhy123456 + 1 + 1 谢谢@Thanks!
wangdanq + 1 + 1 谢谢@Thanks!
wapjsx + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wangdanq 发表于 2024-11-15 11:08
谢谢楼主分享  学习一下
htq999 发表于 2024-11-15 11:12
zjhzxx666 发表于 2024-11-15 11:14
yinuo2012 发表于 2024-11-15 11:17
学习了,谢谢楼主
jianfeng1334 发表于 2024-11-15 11:18
谢谢楼主分享!
rmk101 发表于 2024-11-15 11:29
好物!多谢!
gxhc168 发表于 2024-11-15 11:32

谢谢楼主的分享
huoxx007 发表于 2024-11-15 11:41
OCR识别的难度还是在手写和不规则
L178881359 发表于 2024-11-15 12:25
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-4 01:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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