आसानी से पठनीय पाठ को टेसेरैक्ट द्वारा मान्यता प्राप्त नहीं है
मैंने कई छवियों में पाठ के चारों ओर बाउंडिंग बॉक्स को पहचानने और आकर्षित करने के लिए EAST (कुशल और सटीक दृश्य पाठ डिटेक्टर) के निम्नलिखित पायोरच कार्यान्वयन का उपयोग किया है !
हालाँकि, OCR का अगला चरण जिसे मैं pytesseract
इन चित्रों को पाठ रूप निकालने और उन्हें तार में परिवर्तित करने के लिए प्रयास कर रहा हूँ - बुरी तरह से विफल हो रहा है। के सभी संभव विन्यास का उपयोग करते हुए --oem
और --psm
, मैं प्राप्त करने में असमर्थ हूँ pytesseract
क्या बहुत स्पष्ट पाठ, उदाहरण के लिए प्रतीत होता है पता लगाने के लिए:
मान्यता प्राप्त पाठ छवियों के नीचे है। भले ही मैंने कंट्रास्ट एन्हांसमेंट लागू किया हो, और मैंने इसे पतला करने और मिटाने की कोशिश की है, लेकिन मुझे टेक्स्ट को पहचानने के लिए टेसरैक्ट नहीं मिल सकता है। यह कई छवियों का सिर्फ एक उदाहरण है जहां पाठ और भी बड़ा और स्पष्ट है। परिवर्तनों, कॉन्फ़िगर या अन्य पुस्तकालयों पर कोई सुझाव मददगार होगा!
अद्यतन: गाऊसी धुंधला + ओट्सो थ्रेसहोल्ड की कोशिश करने के बाद, मैं सफेद पृष्ठभूमि पर काला पाठ प्राप्त करने में सक्षम हूं (जाहिरा तौर पर जो कि pytesseract के लिए आदर्श है), और स्पेनिश भाषा भी जोड़ा, लेकिन यह अभी भी बहुत सादा पाठ नहीं पढ़ सकता है - उदाहरण के लिए:
जिबरिश के रूप में पढ़ता है।
संसाधित पाठ चित्र हैं
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)
जवाब
इन अद्यतन डेटा फ़ाइलों का उपयोग करें ।
यह मार्गदर्शिका बॉक्स प्रदर्शन से बाहर की आलोचना करती है (और शायद सटीकता भी प्रभावित हो सकती है):
प्रशिक्षित डेटा। लेखन के क्षण में, Ubuntu 18.10 के लिए टेसेरैक्ट-ऑकोर्ट-एएनजी पैकेज का बॉक्स प्रदर्शन से भयानक है, संभवतः भ्रष्ट प्रशिक्षण डेटा के कारण।
निम्नलिखित परीक्षण के अनुसार, मैंने अपडेट की गई डेटा फ़ाइलों का उपयोग करके बेहतर परिणाम प्रदान किए। यह वह कोड है जिसका मैंने उपयोग किया है:
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open('farmacias.jpg'), lang='spa', config='--tessdata-dir ./tessdata --psm 7'))
मैंने Spa.traineddata डाउनलोड किया (आपकी उदाहरण छवियों में स्पेनिश शब्द हैं, ठीक है?) से ./tessdata/spa.traineddata
। और परिणाम था:
ARMACIAS
और दूसरी छवि के लिए:
PECIALIZADA:
मैं प्रयोग किया जाता है --psm 7
क्योंकि यहाँ यह कहना है कि इसका मतलब है कि "एक ही पाठ लाइन के रूप में छवि इलाज" और मैंने सोचा था कि अपने परीक्षण छवियों के लिए अर्थपूर्ण होनी चाहिए।
में इस गूगल Colab आप परीक्षण मैंने किया था देख सकते हैं।