بناء تطبيق استخراج النصوص من الصور باستخدام Kivy و Python

بناء تطبيق استخراج النصوص من الصور باستخدام  Kivy و Python

 

يمكن أن يكون إنشاء تطبيق لاستخراج النصوص باستخدام Kivy و Python مشروعًا مثيرًا، خاصة إذا كنت ترغب في تعلم المزيد عن تطوير واجهات المستخدم ومعالجة الصور. في هذا المقال، سنقوم بشرح الكود لمثل هذا التطبيق خطوة بخطوة، حتى تتمكن من فهم كيفية عمله وربما تطويره.

 




المقدمة

هدف هذا التطبيق هو السماح للمستخدمين باختيار ملف صورة، استخراج النص من الصورة باستخدام تقنية التعرف الضوئي على الحروف (OCR)، وعرض النص المستخرج داخل التطبيق. سنستخدم عدة مكتبات لتحقيق ذلك:

 

Kivy و KivyMD للواجهة الرسومية

PIL (مكتبة الصور في Python) لمعالجة الصور

Pytesseract لاستخراج النصوص

Tkinter لاختيار الملفات


إعداد البيئة

أولاً، تأكد من تثبيت جميع المكتبات المطلوبة. يمكنك تثبيتها باستخدام pip:

pip install kivy kivymd pillow pytesseract

كما تحتاج إلى تثبيت Tesseract-OCR على نظامك. يمكنك تنزيله من هنا.

الكود

استيراد المكتبات اللازمة


import kivy
from kivy.app import App
from kivymd.app import MDApp
from kivymd.uix.relativelayout import MDRelativeLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from PIL import Image
from pytesseract import pytesseract
from tkinter.filedialog import askopenfile
from kivy.core.window import Window

تعيين حجم النافذة


Window.size = (500, 500)

في كلاس MyApp، نعرف طريقتين رئيسيتين:

1.     filechooser:

تفتح هذه الطريقة نافذة لاختيار الملفات للمستخدم لاختيار صورة.

     بمجرد اختيار صورة، يتم تحديث locationLabel لعرض مسار الملف، يتم تفعيل زر "Extract Text"، ويتم تعطيل زر "Select Img"


2.     extractText:

تحدد هذه الطريقة مسار ملف Tesseract ، تفتح الصورة المختارة، تستخرج النص منها باستخدام pytesseract، وتعرض النص المستخرج في عنصر TextInput



class MyApp(MDApp):
def filechooser(self, event):
self.file = askopenfile(mode="r", filetypes=[("png files", "*.png")])
self.imgFile = self.file.name
self.locationLabel.text = self.imgFile
self.locationLabel.pos_hint = {"center_x": 0.5, "center_y": 0.2}
self.ExtractButton.disabled = False
self.chooseButton.disabled = True

def extractText(self, event):
self.path_to_tessaract = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
path_to_img = self.imgFile
pytesseract.tesseract_cmd = self.path_to_tessaract
img = Image.open(path_to_img)
text = pytesseract.image_to_string(img)
self.imgtext.text = text

بناء واجهة المستخدم


def build(self):
layout = MDRelativeLayout(md_bg_color=[150/255, 170/255, 30/255])

self.imgtext = TextInput(text="",
size_hint=(None, None),
pos_hint={"center_x": 0.5, "center_y": 0.62},
height=340, width=480,
font_size=25,
foreground_color=(0, 0.5, 0))
layout.add_widget(self.imgtext)

self.chooseButton = Button(text="Select Img",
size_hint=(0.2, 0.1),
pos_hint={"center_x": 0.4, "center_y": 0.07},
disabled=False,
font_size=24,
background_color=(0, 1, 0),
on_press=self.filechooser)
layout.add_widget(self.chooseButton)

self.ExtractButton = Button(text="Extract text",
size_hint=(0.2, 0.1),
pos_hint={"center_x": 0.65, "center_y": 0.07},
disabled=True,
font_size=24,
background_color=(0, 1, 0),
on_press=self.extractText)
layout.add_widget(self.ExtractButton)

self.locationLabel = Label(text="",
size_hint=(1, 1),
pos_hint={"center_x": 0.5, "center_y": 20},
font_size=20,
color=(0, 0, 1))
layout.add_widget(self.locationLabel)

return layout


أخيرًا، نقوم بتشغيل التطبيق إذا تم تنفيذ البرنامج مباشرة.


if __name__ == "__main__":
MyApp().run()

الخاتمة

يوفر هذا الكود إطار عمل أساسي لتطبيق استخراج النصوص باستخدام Kivy و Python. يتيح التطبيق للمستخدمين اختيار صورة، استخراج النص منها، وعرض النص المستخرج داخل التطبيق. مع هذا الفهم، يمكنك تخصيص وتحسين التطبيق ليناسب احتياجاتك. 


للحصول على الكود كامل   اضغط هنا 





AHMED A. A. ALFARRA











 

  

تعليقات

المشاركات الشائعة من هذه المدونة

التعرف على الوجوه باستخدام Python

استخدام Webots و MediaPipe للتحكم في حركة الروبوت بواسطة وضعية الرأس

التحكم بالفأرة بالفم باستخدام OpenCV و Mediapipe و PyAutoGUI