Tesseract Kullanarak Linux Komut Satırından OCR Nasıl Yapılır

Yayınlanan: 2022-01-29
Linux dizüstü bilgisayarda bir terminal penceresi.
Fatmawati Achmad Zaenuri/Shutterstock

Tesseract OCR motorunu kullanarak Linux komut satırındaki görüntülerden metin ayıklayabilirsiniz. Hızlı, doğru ve yaklaşık 100 dilde çalışıyor. İşte nasıl kullanılacağı.

Optik karakter tanıma

Optik karakter tanıma (OCR), bir görüntüdeki sözcüklere bakma ve bu sözcükleri bulma ve ardından bunları düzenlenebilir metin olarak çıkarma yeteneğidir. İnsanlar için bu basit görevi yapmak bilgisayarlar için çok zordur. İlk çabalar en hafif tabirle hantaldı. Yazı tipi veya boyut OCR yazılımının beğenisine uygun değilse, bilgisayarlar genellikle karıştırıldı.

Bununla birlikte, bu alandaki öncülere hâlâ büyük saygı duyuluyordu. Bir belgenin elektronik kopyasını kaybettiyseniz ancak hala basılı bir sürümü varsa, OCR elektronik, düzenlenebilir bir sürümü yeniden oluşturabilir. Sonuçlar yüzde 100 doğru olmasa bile, bu yine de büyük bir zaman tasarrufu sağladı.

Bazı manuel toparlamalarla belgenizi geri alırsınız. İnsanlar, bir OCR paketinin karşı karşıya olduğu görevin karmaşıklığını anladıkları için yaptığı hataları affediyorlardı. Ayrıca, tüm belgeyi yeniden yazmaktan daha iyiydi.

O zamandan beri işler önemli ölçüde iyileşti. Hewlett Packard tarafından yazılan Tesseract OCR uygulaması, 1980'lerde ticari bir uygulama olarak başladı. 2005 yılında açık kaynaklıydı ve şimdi Google tarafından destekleniyor. Çoklu dil özelliklerine sahiptir, mevcut en doğru OCR sistemlerinden biri olarak kabul edilir ve ücretsiz olarak kullanabilirsiniz.

Tesseract OCR'yi Yükleme

Tesseract OCR'yi Ubuntu'ya kurmak için şu komutu kullanın:

 sudo apt-get kurulum tesseract-ocr 

Fedora'da komut şudur:

 sudo dnf tesseract'ı kurun 

Manjaro'da şunları yazmanız gerekir:

 sudo pacman -Syu tesseract 

Tesseract OCR'yi kullanma

Tesseract OCR için bir dizi zorluk oluşturacağız. Metin içeren ilk görselimiz, Genel Veri Koruma Yönetmeliği'nin 63. gerekçesinden bir alıntıdır. Bakalım OCR bunu okuyabilecek mi (ve uyanık kal).

GDPR'nin 63. gerekçesinden alıntı

Reklamcılık

Zor bir görüntü çünkü her cümle, yasama belgelerinde tipik olan, soluk bir üst simge numarasıyla başlıyor.

tesseract komutuna aşağıdakiler dahil bazı bilgiler vermemiz gerekiyor:

  • İşlemesini istediğimiz görüntü dosyasının adı.
  • Ayıklanan metni tutmak için oluşturacağı metin dosyasının adı. Dosya uzantısını sağlamak zorunda değiliz (her zaman .txt olacaktır). Aynı ada sahip bir dosya zaten varsa, üzerine yazılacaktır.
  • Görüntünün nokta/inç (dpi) çözünürlüğünün ne olduğunu tesseract söylemek için --dpi seçeneğini kullanabiliriz. Bir dpi değeri sağlamazsak, tesseract onu bulmaya çalışacaktır.

Resim dosyamızın adı “resital-63.png” olup çözünürlüğü 150 dpi'dir. Ondan “resital.txt” adında bir metin dosyası oluşturacağız.

Komutumuz şöyle görünür:

 tesseract resitali-63.png resitali --dpi 150 

Sonuçlar çok iyi. Tek sorun üst simgeler - doğru okunamayacak kadar soluktular. İyi sonuçlar elde etmek için kaliteli bir görüntü çok önemlidir.

63. alıntıdan alıntı.

tesseract üst simge sayılarını tırnak işaretleri (“) ve derece simgeleri (°) olarak yorumladı, ancak asıl metin mükemmel bir şekilde çıkarıldı (resmin sağ tarafının buraya sığması için kırpılması gerekiyordu).

Reklamcılık

Son karakter, satır başı olan 0x0C onaltılı değerine sahip bir bayttır.

Aşağıda, farklı boyutlarda ve hem kalın hem de italik olarak metin içeren başka bir resim bulunmaktadır.

Kalın ve italik olarak farklı boyutlarda metin içeren resim.

Bu dosyanın adı “bold-italic.png”dir. “bold.txt” adında bir metin dosyası oluşturmak istiyoruz, bu yüzden komutumuz:

 tesseract bold-italic.png bold --dpi 150 

Bu herhangi bir sorun yaratmadı ve metin mükemmel bir şekilde çıkarıldı.

Farklı Diller Kullanmak

Tesseract OCR yaklaşık 100 dili destekler. Bir dili kullanmak için önce onu yüklemelisiniz. Listede kullanmak istediğiniz dili bulduğunuzda kısaltmasını not edin. Galce için destek yükleyeceğiz. Kısaltması, Galce anlamına gelen "Cymru"nun kısaltması olan "cym"dir.

Kurulum paketi, dil kısaltması sonuna etiketlenmiş olarak “tesseract-ocr-” olarak adlandırılır. Galce dil dosyasını Ubuntu'ya kurmak için şunları kullanacağız:

 sudo apt-get kurulum tesseract-ocr-cym 

Reklamcılık

Yazılı görsel aşağıdadır. Galler milli marşının ilk mısrasıdır.

Galler milli marşının ilk ayetinin metnini içeren resim.

Bakalım Tesseract OCR mücadeleye hazır mı? tesseract çalışmak istediğimiz dili bilmesini sağlamak için -l (dil) seçeneğini kullanacağız:

 tesseract hen-wlad-fy-nhadau.png marşı -l cym --dpi 150 

tesseract , aşağıdaki metinde gösterildiği gibi mükemmel bir şekilde başa çıkıyor. Da iawn , Tesseract OCR.

Çıkarılan Galce metin.

Belgeniz iki veya daha fazla dil içeriyorsa (örneğin, Galce-İngilizce sözlük gibi), tesseract başka bir dil eklemesini söylemek için bir artı işareti ( + ) kullanabilirsiniz, örneğin:

 tesseract image.png metin dosyası -l eng+cym+fra

Tesseract OCR'yi PDF'lerle Kullanma

tesseract komutu, görüntü dosyalarıyla çalışmak üzere tasarlanmıştır, ancak PDF'leri okuyamaz. Ancak, bir PDF'den metin çıkarmanız gerekiyorsa, bir dizi görüntü oluşturmak için önce başka bir yardımcı program kullanabilirsiniz. Tek bir resim, PDF'nin tek bir sayfasını temsil edecektir.

İhtiyacınız olan pdftppm yardımcı programı, Linux bilgisayarınızda zaten kurulu olmalıdır. Örneğimiz için kullanacağımız PDF, Alan Turing'in yapay zeka üzerine çığır açan makalesinin bir kopyası, “Bilgisayar Makineleri ve Zeka”.

A.M.'nin "Bilgisayar Makineleri ve İstihbarat" başlıklı başlık sayfasının PDF'si. Turing.

Reklamcılık

PNG dosyaları oluşturmak istediğimizi belirtmek için -png seçeneğini kullanıyoruz. PDF dosyamızın adı “turing.pdf”dir. Resim dosyalarımızı “turing-01.png”, “turing-02.png” vb. olarak adlandıracağız:

 pdftoppm -png turing.pdf turing 

Tek bir komut kullanarak her görüntü dosyasında tesseract çalıştırmak için bir for döngüsü kullanmamız gerekir. "Turing- nn .png" dosyalarımızın her biri için tesseract çalıştırırız ve görüntü dosyası adının bir parçası olarak "text-" artı "turing- nn " adlı bir metin dosyası oluştururuz:

 i için turing-??.png; "$i" "text-$i" -l eng; tamamlamak; 

Tüm metin dosyalarını tek bir dosyada birleştirmek için cat kullanabiliriz:

 cat text-turing* > tam.txt 

Peki, nasıl oldu? Aşağıda göreceğiniz gibi çok iyi. Yine de ilk sayfa oldukça zor görünüyor. Farklı yazı stilleri ve boyutları ve dekorasyonu vardır. Ayrıca sayfanın sağ kenarında dikey bir "filigran" vardır.

Ancak, çıktı orijinaline yakındır. Açıkçası, biçimlendirme kayboldu, ancak metin doğru.

Turing PDF'sinden çıkarılan metnin ilk sayfası.

Dikey filigran, sayfanın alt kısmında anlamsız bir satır olarak yazılmıştır. Metin, tesseract tarafından doğru bir şekilde okunamayacak kadar küçüktü, ancak onu bulup silmek yeterince kolay olurdu. En kötü sonuç, her satırın sonunda başıboş karakterler olurdu.

Reklamcılık

Merakla, ikinci sayfadaki soru ve cevap listesinin başındaki tek harfler göz ardı edildi. PDF'den alınan bölüm aşağıda gösterilmiştir.

Turing belgesinin PDF'sinden bir soru ve cevap listesi.

Aşağıda görebileceğiniz gibi, sorular kaldı, ancak her satırın başındaki “Q” ve “A” kayboldu.

Turing PDF'sinin soru-cevap sayfasından çıkarılan metin.

Diyagramlar da doğru şekilde kopyalanmayacaktır. Aşağıda gösterileni Turing PDF'sinden çıkarmaya çalıştığımızda ne olduğuna bakalım.

Turing PDF'sinden bir "Giriş" ve "Son Durum" diyagramı.

Aşağıdaki sonucumuzda da görebileceğiniz gibi karakterler okunmuş ancak diyagramın formatı kaybolmuş.

Turing PDF'sindeki bir diyagramdan çıkarılan metin.

Yine, tesseract , alt simgelerin küçük boyutuyla mücadele etti ve bunlar yanlış oluşturuldu.

Reklamcılık

Adil olmak gerekirse, yine de, yine de iyi bir sonuçtu. Basit metni çıkaramadık, ancak daha sonra, bu örnek bir zorluk teşkil ettiği için kasıtlı olarak seçildi.

İhtiyacınız Olduğunda İyi Bir Çözüm

OCR, günlük olarak kullanmanız gereken bir şey değildir. Ancak ihtiyaç doğduğunda, emrinizde en iyi OCR motorlarından birine sahip olduğunuzu bilmek güzel.