Ich bin neu in Python und OpenCV. Ich arbeite derzeit an OCR mit Python und OpenCV ohne Tesseract. Bis jetzt war ich erfolgreich bei der Erkennung des Textes (Zeichen und Ziffern), aber ich habe ein Problem, Raum zwischen Wörtern zu erkennen. Eg- Wenn das Bild sagt "Hallo John", dann erkennt hallo John aber kann nicht erkennen, Abstand zwischen ihnen, so ist meine Ausgabe "HelloJohn" ohne Leerzeichen zwischen ihnen.Meine Code zum Extrahieren von Kontur geht so (I alle notwendigen Module importiert haben, ist dies einer der Hauptmodul Extrahieren Kontur):Erkennung von Interword Space in OCR mit Python und OpenCV
imgGray = cv2.cvtColor(imgTrainingNumbers, cv2.COLOR_BGR2GRAY)
imgBlurred = cv2.GaussianBlur(imgGray, (5,5), 0)
imgThresh = cv2.adaptiveThreshold(imgBlurred,
255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY_INV,
11,
2)
cv2.imshow("imgThresh", imgThresh)
imgThreshCopy = imgThresh.copy()
imgContours, npaContours, npaHierarchy = cv2.findContours(imgThreshCopy,
cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
Danach I die extrahierten Konturen klassifizieren, die Ziffern und Zeichen sind. Bitte helfen Sie mir, Raum zwischen ihnen zu erkennen. Vielen Dank im Voraus, Ihre Antwort wäre sehr hilfreich.
So haben Sie Ihre binäres Bild mit den Buchstaben darauf . Ein Ansatz wäre es, die Buchstaben mit [Erweiterung] (https://docs.opencv.org/3.3.0/d9/d61/tutorial_py_morphological_ops.html) wachsen zu lassen, bis naheliegende Zeichen verschmelzen, getrennte Wörter jedoch nicht. Dann haben Sie separate Blobs für jedes Wort. Die Konturen dieser Blobs würden jeweils eine Maske für ein einzelnes Wort sein, und Sie können das Originalbild mit jedem Blob einzeln maskieren, machen Sie einfach die OCR für separate Wörter. –