Tesseract tarafından tanınmayan, kolay okunabilen metin
Aşağıdaki kullanmış PyTorch uygulanmasını ait DOĞU belirlemek ve görüntülerin bir dizi metnin etrafında sınırlayıcı kutuları çizmek için (Verimli ve Doğru Sahne Metin Dedektör) ve çok iyi çalışıyor!
Bununla birlikte, pytesseract
metni bu görüntülerden çıkarmak ve dizelere dönüştürmek için denediğim OCR'nin bir sonraki adımı korkunç bir şekilde başarısız oluyor. Tüm olası yapılandırmaları kullanma --oem
ve --psm
ben alamıyor, pytesseract
örneğin çok net metin, gibi görünen algılamak için:
Tanınan metin, görüntülerin altındadır. Kontrast iyileştirme uygulamam ve ayrıca genişletmeyi ve aşındırmayı denememe rağmen, metni tanımak için tesseract alamıyorum. Bu, metnin daha da büyük ve daha net olduğu birçok görselden sadece bir örnektir. Dönüşümler, yapılandırmalar veya diğer kitaplıklarla ilgili herhangi bir öneri yardımcı olacaktır!
GÜNCELLEME: Gauss bulanıklığı + Otso eşiklemesini denedikten sonra, beyaz arka planda siyah metin alabiliyorum (görünüşe göre pytesseract için ideal) ve ayrıca İspanyolca dilini ekledim, ancak yine de çok düz metni okuyamıyor - örneğin:
anlamsız olarak okur.
İşlenmiş metin görüntüleri,
img_path = './images/fesa.jpg'
img = Image.open(img_path)
boxes = detect(img, model, device)
origbw = cv2.imread(img_path, 0)
for box in boxes:
box = box[:-1]
poly = [(box[0], box[1]),(box[2], box[3]),(box[4], box[5]),(box[6], box[7])]
x = []
y = []
for coord in poly:
x.append(coord[0])
y.append(coord[1])
startX = int(min(x))
startY = int(min(y))
endX = int(max(x))
endY = int(max(y))
#use pre-defined bounding boxes produced by EAST to crop the original image
cropped_image = origbw[startY:endY, startX:endX]
#contrast enhancement
clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8,8))
res = clahe.apply(cropped_image)
text = pytesseract.image_to_string(res, config = "-psm 12")
plt.imshow(res)
plt.show()
print(text)
Yanıtlar
Bu güncellenmiş veri dosyalarını kullanın .
Bu kılavuz , kullanıma hazır performansı eleştirmektedir (ve belki doğruluk da etkilenebilir):
Eğitimli veriler. Yazma anında, Ubuntu 18.10 için tesseract-ocr-eng APT paketi, muhtemelen bozuk eğitim verileri nedeniyle kutudan çıktığı gibi korkunç bir performans sergiliyor.
Yaptığım aşağıdaki teste göre, güncellenmiş veri dosyalarını kullanmak daha iyi sonuçlar veriyor gibi görünüyor. Bu kullandığım kod:
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open('farmacias.jpg'), lang='spa', config='--tessdata-dir ./tessdata --psm 7'))
İndirdiğim spa.traineddata (senin örneğin görüntüleri sağ, İspanyol kelime var?) İçin ./tessdata/spa.traineddata
. Ve sonuç şuydu:
ARMACIAS
Ve ikinci resim için:
PECIALIZADA:
Kullandım --psm 7
çünkü burada "Resmi tek bir metin satırı olarak ele al" anlamına geliyor ve bunun test resimleriniz için mantıklı olacağını düşündüm.
Gelen bu Google CoLab benim yaptığım testi görebilirsiniz.