2012-06-09 6 views
11

Oft wird bei der OCR-Verarbeitung eine Bilddatei im Wesentlichen in Segmente geschnitten und jedes Zeichen wird als Segment erfasst. Zum Beispiel Unsegmented text as imageWie konvertiert man ein Bild in Zeichensegmente?

hat wie Image in which text has been segmented and is ready for OCR

auch zu etwas verwandelt wird, gibt es eine Algorithmus für asiatische Sprachen wie Telugu für diesen Zweck leicht verfügbar? Wenn nicht, wie wird das für Englisch gemacht?

Antwort

36

Es kann leicht mit OpenCV durchgeführt werden. Unten ist ein Codebeispiel:

import cv2 
import numpy as np 

# Load the image 
img = cv2.imread('sof.png') 

# convert to grayscale 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

# smooth the image to avoid noises 
gray = cv2.medianBlur(gray,5) 

# Apply adaptive threshold 
thresh = cv2.adaptiveThreshold(gray,255,1,1,11,2) 
thresh_color = cv2.cvtColor(thresh,cv2.COLOR_GRAY2BGR) 

# apply some dilation and erosion to join the gaps 
thresh = cv2.dilate(thresh,None,iterations = 3) 
thresh = cv2.erode(thresh,None,iterations = 2) 

# Find the contours 
contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) 

# For each contour, find the bounding rectangle and draw it 
for cnt in contours: 
    x,y,w,h = cv2.boundingRect(cnt) 
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) 
    cv2.rectangle(thresh_color,(x,y),(x+w,y+h),(0,255,0),2) 

# Finally show the image 
cv2.imshow('img',img) 
cv2.imshow('res',thresh_color) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Ausgabe wie folgt aussehen wird:

enter image description hereenter image description here

+4

+1 große Antwort, aber ich denke, dass es bei jedem Schritt einige Kommentare verwenden könnte (zumal OP nicht erwähnt OpenCV in seiner Frage) – Amro

+1

@Amro: Kommentare hinzugefügt –