Spaces:
Runtime error
Runtime error
File size: 2,155 Bytes
da280fe f3b54e3 2649793 b2cc17d f3b54e3 |
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 |
import os
from datasets import load_dataset
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
import customtkinter as ctk
from tkinter import filedialog
from PIL import Image, ImageTk
dataset = load_dataset("hezarai/parsynth-ocr-200k")
# ΨͺΩΨΈΫΩ
GUI
ctk.set_appearance_mode("System")
ctk.set_default_color_theme("blue")
class OCRApp(ctk.CTk):
def __init__(self):
super().__init__()
self.title("OCR with Hugging Face")
self.geometry("800x600")
# Ω
Ψ―Ω Ω ΩΎΨ±Ψ―Ψ§Ψ²Ψ΄Ϊ―Ψ±
self.processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
self.model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")
# ΨΉΩΨ§Ψ΅Ψ± Ψ±Ψ§Ψ¨Ψ· Ϊ©Ψ§Ψ±Ψ¨Ψ±Ϋ
self.image_label = ctk.CTkLabel(self, text="No Image Selected", width=400, height=300, corner_radius=8)
self.image_label.pack(pady=20)
self.upload_button = ctk.CTkButton(self, text="Upload Image", command=self.upload_image)
self.upload_button.pack(pady=10)
self.result_label = ctk.CTkTextbox(self, height=200)
self.result_label.pack(pady=10, fill="both", expand=True)
def upload_image(self):
file_path = filedialog.askopenfilename(filetypes=[("Image Files", "*.png;*.jpg;*.jpeg")])
if not file_path:
return
# ΩΩ
Ψ§ΫΨ΄ ΨͺΨ΅ΩΫΨ±
image = Image.open(file_path).resize((400, 300))
self.image_tk = ImageTk.PhotoImage(image)
self.image_label.configure(image=self.image_tk, text="")
# Ψ§ΩΨ¬Ψ§Ω
OCR
text = self.perform_ocr(file_path)
self.result_label.delete("1.0", "end")
self.result_label.insert("1.0", text)
def perform_ocr(self, image_path):
image = Image.open(image_path).convert("RGB")
pixel_values = self.processor(images=image, return_tensors="pt").pixel_values
generated_ids = self.model.generate(pixel_values)
generated_text = self.processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
return generated_text
if __name__ == "__main__":
app = OCRApp()
app.mainloop()
|