بناء تطبيق استخراج النصوص من الصور باستخدام Kivy و Python
بناء تطبيق استخراج النصوص من الصور باستخدام Kivy و Python
يمكن أن يكون إنشاء تطبيق لاستخراج النصوص باستخدام
Kivy و Python مشروعًا مثيرًا، خاصة إذا كنت ترغب في تعلم
المزيد عن تطوير واجهات المستخدم ومعالجة الصور. في هذا المقال، سنقوم بشرح الكود لمثل
هذا التطبيق خطوة بخطوة، حتى تتمكن من فهم كيفية عمله وربما تطويره.
المقدمة
هدف هذا التطبيق هو السماح للمستخدمين باختيار ملف صورة، استخراج النص
من الصورة باستخدام تقنية التعرف الضوئي على الحروف (OCR)،
وعرض النص المستخرج داخل التطبيق. سنستخدم عدة مكتبات لتحقيق ذلك:
Kivy و KivyMD للواجهة الرسومية
PIL (مكتبة الصور في Python) لمعالجة
الصور
Pytesseract لاستخراج النصوص
Tkinter لاختيار الملفات
إعداد البيئة
أولاً، تأكد من تثبيت جميع المكتبات المطلوبة. يمكنك تثبيتها باستخدام
pip:
كما تحتاج إلى تثبيت
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
تعليقات
إرسال تعليق