2012-06-09 19 views
11

अक्सर ओसीआर की प्रक्रिया में, एक छवि फ़ाइल अनिवार्य रूप से सेगमेंट में कट जाती है, और प्रत्येक चरित्र को प्रत्येक सेगमेंट के रूप में पुन: उपयोग किया जाता है। उदाहरण के लिए, Unsegmented text as imageकिसी छवि को वर्ण खंड में कनवर्ट करने के लिए कैसे करें?

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

भी तरह कुछ करने के लिए तब्दील किया जाना है, वहाँ इस उद्देश्य के लिए आसानी से उपलब्ध तेलुगू की तरह एशियाई भाषाओं के लिए किसी भी एल्गोरिथ्म है? यदि नहीं, तो यह अंग्रेजी के लिए कैसे किया जाता है?

उत्तर

36

इसे ओपनसीवी का उपयोग करके आसानी से किया जा सकता है। नीचे एक नमूना कोड है:

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() 

आउटपुट नीचे तरह दिखेगा:

enter image description hereenter image description here

+4

+1 महान जवाब लेकिन मुझे लगता है कि हर कदम पर कुछ टिप्पणियाँ इस्तेमाल कर सकते हैं (विशेष रूप से ओ पी का उल्लेख नहीं था अपने प्रश्न में ओपनसीवी) – Amro

+1

@ एमेरो: टिप्पणी जोड़ें –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^