Zephyrnet Logosu

Yeni Başlayanlar İçin Kodlu İlginç Python Projeleri – Bölüm 2

Tarih:

Benim de önceki makalemde üç python projesini kodlarla ele alıp detaylı bir şekilde anlattım. Ayrıca deneyebileceğiniz bazı örnekler verdi. Tüm bu projeler yeni başlayanlar için uygundu. Bu sefer yine kodlu birkaç python projesine bakacağız. Ve ne kadar çok proje yaparsanız, programlamada ve dilde o kadar iyi olacaksınız.

Şimdi adım adım metin çıkarma ile başlayalım:

1. cv2.COLOR_BGR2GRAY kullanarak görüntüyü Griye dönüştürün.

cv2.cvtColor(giriş_resim, cv2.COLOR_BGR2GRAY)

2. Görüntüdeki konturları bulma:

Konturları bulmak için cv2.findContours()'u kullanın. Üç parametre alır: kaynak görüntü, kontur alma modu, kontur yaklaşımı yöntemi. Bu, tüm konturların bir python listesini döndürür. Kontur, nesnedeki sınır noktalarının (x,y) koordinatlarının bir NumPy dizisinden başka bir şey değildir.

3. OCR'yi uygulayın.

Her bir kontur boyunca döngü yaparak, cv2.boundingRect() işlevini kullanarak x,y ve genişlik, yükseklik alın. Ardından cv2.rectange() kullanarak görüntüde bir dikdörtgen işlevi çizin. Bunun beş parametresi vardır: giriş görüntüsü, (x, y), (x+w, y+h), dikdörtgen için sınır rengi, sınırın boyutu.

4. Dikdörtgen bölgeyi kırpın ve metni çıkarmak için bunu tesseract'a iletin. İçeriğinizi ekleme modunda açarak bir dosyaya kaydedin.

Daha fazla ayrıntı için kod yorumlarını da gözden geçirin.

Kodu:

cv2'yi içe aktar pytesseract # yolunu bilgisayarınızda Tesseract-OCR'ye aktarın pytesseract.pytesseract.tesseract_cmd = 'path_to_tesseract.exe' img = cv2.imread("input.png") #input image gray = cv2.cvtColor(img, cv2.R2GOLOR) ) # Görüntüyü gri skalaya dönüştürme # OTSU eşiği ret gerçekleştirme, img_thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU | cv2.THRESH_BINARY_INV)
# yapı şekli ve çekirdek boyutu verir # çekirdek boyutu algılanacak dikdörtgenin alanını artırır veya azaltır. rect_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (18, 18)) #eşik görüntüde genişleme dilation = cv2.dilate(img_thresh , rect_kernel, iterasyonlar = 1) img_contours, hiyerarşi = cv2.findContours(dilation, EXV2.RETR_cv2. cv2.CHAIN_APPROX_NONE) im2 = img.copy() file = open("Output.txt", "w+") #sonuçları kaydetmek için metin dosyası file.write("") file.close() #kontur için her kontur boyunca döngü img_contours'da: x, y, w, h = cv2.boundingRect(contour) rect = cv2.rectangle(im0, (x, y), (x + w, y + h), (255, 0, 2), 2 ) kırpılmış_image = imXNUMX[y:y + h, x:x + w] #metin bloğu dosyasını kırp = open("Output.txt", "a") metin = pytesseract.image_to_string(cropped_image) #applying OCR file.write (metin) file.write("n") dosya.close()

Giriş resmi:

Kodlu Python ProjeleriÇıktı resmi:

Kodlu Python Projeleri

2. PDF Dosyanızı Sesli Konuşmaya Dönüştürün

Diyelim ki okumak için PDF olarak bir kitabınız var ama kaydırmak için çok tembelsiniz; o PDF sesli kitaba dönüştürülse ne kadar iyi olurdu. Öyleyse, bunu python kullanarak uygulayalım.

Bu iki pakete ihtiyacımız olacak:

pyttsx3: Metin Okuma içindir ve makinenin konuşmasına yardımcı olur.

PyPDF2: Bir PDF araç takımıdır. Belge bilgilerini çıkarma, belgeleri birleştirme vb.

Bunları şu komutları kullanarak yükleyin:

pip kurulumu pyttsx3 pip kurulumu PyPDF2 

Adımlar:

  • Gerekli modülleri içe aktarın.
  • PDF dosyasını okumak için PdfFileReader() kullanın.
  • GetPage() yöntemi, okunacak sayfayı seçmek için kullanılır.
  • Extract text() kullanarak metni ayıklayın.
  • pyttx3 kullanarak metni söyleyin.

Kodu:

# modülleri içe aktarın PyPDF2'yi içe aktarın pyttsx3'ü içe aktarın # PDF dosyanızın yolu = open('Book.pdf', 'rb') # PdfFileReader nesnesi pdfReaderObj = PyPDF2.PdfFileReader(path) # from_page ile başlamak istediğiniz sayfa = pdfReaderObj.getPage(12) içerik = from_page.extractText() # metni okuma konuşma = pyttsx3.init() konuşma.say(içerik) konuşma.runAndWait()

Bu kadar! İşi yapacak. Bu küçük kod, okumak istemediğinizde işinize yarar; duyabilirsin.

Ardından, tikinter veya başka bir şey kullanarak bu projeye bir GUI sağlayabilirsiniz. Pdf yolunu girmek için bir GUI, başlamak için sayfa numarası, bir durdurma düğmesi verebilirsiniz. Bunu dene!

Bir sonraki projeye geçelim.

3. Posta kutusundan postaları okuma ve ekleri indirme

Python ile posta kutusunu okumanın faydasının ne olduğunu anlayalım. Diyelim ki komut dosyası için girdi olarak veya Makine öğrenme modeli için girdi olarak gerekli olan bazı verilerin günlük olarak word veya excel olarak geldiği bir proje üzerinde çalışıyoruz. Dolayısıyla bu veri dosyasını günlük olarak indirip elinize vermeniz gerekiyorsa, yoğun olacaktır. Ancak bu adımı otomatikleştirebilirsek, bu dosyayı okuyabilir ve gerekli eki indirebilirsek, bu çok yardımcı olacaktır. Öyleyse, bunu uygulayalım.

Belirli bir postadan otomatik ek indirmeyi uygulamak için pywin32 kullanacağız. Bazı eylemleri gerçekleştirmek için Excel, PowerPoint, Word, Outlook vb. Windows uygulamalarına erişebilir. Outlook'a odaklanacağız ve ekleri Outlook posta kutusundan indireceğiz.

Not: Bu, kullanıcı e-posta kimliği veya parola gibi kimlik doğrulaması gerektirmez. Makinenizde oturum açmış olan Outlook'a erişebilir. (Komut dosyasını çalıştırırken görünüm uygulamasını açık tutun).

Yukarıdaki örnekte, yalnızca e-posta gönderebildiği ve ekleri indiremediği için smtplib'i seçtik. Bu nedenle, Outlook'tan ekleri indirmek için pywin32 ile gideceğiz ve bu oldukça basit olacak. Şimdi koda bakalım.

Yüklemek için komut: pip kurulumu pywin32

İçe aktarma modülü

win32com.client'i içe aktar

Şimdi Outlook ile bir bağlantı kurun.

görünüm = win32com.client.Dispatch(“Outlook.Application”).GetNamespace(“MAPI”)

Gelen Kutusuna erişmeyi deneyelim:

gelen kutusu = görünüm.GetDefaultFolder(sayı)

Bu işlev, görünüm uygulamamızdaki gelen kutusu klasörünün dizinini söyleyecek bir sayı/tamsayı girdi olarak alır.

Tüm klasörlerin dizinini kontrol etmek için şu kod parçacığını çalıştırmanız yeterlidir:

import win32com.client outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") için aralık(50): deneyin: box = outlook.GetDefaultFolder(i) name = box.Name print( i, isim) hariç: geçmek

Çıktı:

3 Silinmiş Öğeler 4 Giden Kutusu 5 Gönderilmiş Öğeler 6 Gelen Kutusu 9 Takvim

Çıktıda gördüğünüz gibi Inbox index 6'dır. Yani fonksiyonda 6 kullanacağız.

gelen kutusu = görünüm.GetDefaultFolder(6)

Gelen kutusundaki tüm e-postaların konusunu yazdırmak istiyorsanız, şunu kullanın:

Mesajlar = gelenbox.Items # ilk e-posta mesajını al = Mesajlar.GetFirst() # gelen kutusundaki tüm e-postalar arasında dolaşmak için True iken: deneyin: print(message.subject) # e-posta mesajının konusunu alın = mesajlar.GetNext () hariç: mesaj = mesajlar.GetNext()

“Mesaj” gibi başka özellikler de vardır. konu”, “mesaj. buna göre kullanılabilecek senton ”.

Eklenti İndiriliyor

Bir postadaki eklerin tüm adlarını yazdırmak istiyorsanız:

mesajdaki ek için.Ekler: print(attachment.FileName)

Belirli bir göndericiden bir ek (.xlsx uzantılı bir excel dosyası) indirelim.

win32com.client import yeniden import işletim sistemi import = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") gelen kutusu = outlook.GetDefaultFolder(6) iletileri = gelenbox.Items iletisi = iletiler.GetFirst() while Doğru: deneyin: if re.search('Veri Raporu', str(message.Subject).lower()) != Yok ve re.search("ABC prasad", str(message.Sender).lower()) ! = Yok: ekler = ileti.mesajdaki ek için ekler.Ekler: ekte ".xlsx" varsa.DosyaAdı veya ekte ".XLSX".DosyaAdı: ek_adı = str(attachment.DosyaAdı).lower() ek.SaveASFile( os.path.join(download_folder_path, ek_adı)) başka: iletiyi ilet = iletiler.GetNext() dışında: ileti = iletiler.GetNext() çıkış

açıklama

Bu, Outlook gelen kutusundan bir ek indirmek için tam koddur. Try bloğunun içinde koşulları değiştirebilirsiniz. Örneğin, Veri Raporu ve Gönderici adı “ABC prasad” gibi konuları olan mailleri arıyorum. Bu nedenle, gelen kutusundaki ilk postadan itibaren yinelenir ve koşul gerçekleşirse, söz konusu postanın .xlsx veya .XLSX uzantılı bir eki olup olmadığına bakar. Böylece tüm bu konuları, göndericiyi, dosya türünü değiştirebilir ve istediğiniz dosyayı indirebilirsiniz. Dosyayı bulduğunda “download_folder_path” olarak verilen yola kaydedilir.

Son Notlar

Önceki bir makalede üç projeyi ve bu makalede üç projeyi tartıştık. Umarım kodlu bu python projeleri, beceri setinizi cilalamanıza yardımcı olmuştur. Biraz uygulamalı yapın ve bunları deneyin; onları kodlamanın tadını çıkaracaksınız. Umarım bu makaleyi faydalı bulursunuz. hadi bağlanalım Linkedin.

Okurken teşekkürler

Mutlu kodlama!

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır. 

Kaynak: https://www.analyticsvidhya.com/blog/2022/01/interesting-python-projects-with-code-for-beginners-part-2/

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?