Teks yang mudah dibaca tidak dikenali oleh tesseract
Saya telah menggunakan implementasi PyTorch berikut dari EAST (Detektor Teks Adegan Efisien dan Akurat) untuk mengidentifikasi dan menggambar kotak pembatas di sekitar teks dalam sejumlah gambar dan itu bekerja dengan sangat baik!
Namun, langkah OCR berikutnya yang saya coba pytesseract
untuk mengekstrak teks dari gambar-gambar ini dan mengubahnya menjadi string - gagal total. Menggunakan semua kemungkinan konfigurasi --oem
dan --psm
, saya tidak pytesseract
dapat mendeteksi apa yang tampak sebagai teks yang sangat jelas, misalnya:

Teks yang dikenali ada di bawah gambar. Meskipun saya telah menerapkan peningkatan kontras, dan juga mencoba melebarkan dan mengikis, saya tidak dapat bereaksi untuk mengenali teks tersebut. Ini hanyalah satu contoh dari banyak gambar di mana teksnya lebih besar dan lebih jelas. Setiap saran tentang transformasi, konfigurasi, atau pustaka lainnya akan sangat membantu!
PEMBARUAN: Setelah mencoba Gaussian blur + Otso thresholding, saya bisa mendapatkan teks hitam dengan latar belakang putih (tampaknya yang ideal untuk pytesseract), dan juga menambahkan bahasa Spanyol, tetapi masih tidak dapat membaca teks yang sangat sederhana - misalnya:

dibaca sebagai omong kosong.
Gambar teks yang diproses adalah


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)
Jawaban
Gunakan file data yang diperbarui ini .
Panduan ini mengkritik performa out-of-the box (dan mungkin keakuratannya juga dapat terpengaruh):
Data terlatih. Pada saat penulisan, paket APT tesseract-ocr-eng untuk Ubuntu 18.10 memiliki kinerja luar biasa yang buruk, kemungkinan karena data pelatihan yang korup.
Menurut pengujian berikut yang saya lakukan, menggunakan file data yang diperbarui tampaknya memberikan hasil yang lebih baik. Ini adalah kode yang saya gunakan:
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open('farmacias.jpg'), lang='spa', config='--tessdata-dir ./tessdata --psm 7'))
Saya mengunduh spa.traineddata (gambar contoh Anda memiliki kata-kata Spanyol, kan?) Ke./tessdata/spa.traineddata
. Dan hasilnya adalah:
ARMACIAS
Dan untuk gambar kedua:
PECIALIZADA:
Saya menggunakan --psm 7
karena di sini dikatakan bahwa itu berarti "Perlakukan gambar sebagai satu baris teks" dan menurut saya itu masuk akal untuk gambar uji Anda.
Di Google Colab ini Anda dapat melihat tes yang saya lakukan.