प्रतिलिपि या दोहराना प्रश्न के रूप में चिह्नित करने से पहले, कृपया पहले पूरा प्रश्न पढ़ें।ओसीआर: पाठ के लिए छवि?
मैं pressent पर ऐसा करने में सक्षम हूँ के रूप में नीचे है:
- छवि हो और ओसीआर के लिए वांछित हिस्सा काटने के लिए।
tesseract
औरleptonica
का उपयोग कर छवि को संसाधित करें।- जब लागू दस्तावेज़ भाग में फसल हो जाता है यानी प्रति छवि 1 वर्ण यह 96% सटीकता प्रदान करता है।
- यदि मैं ऐसा नहीं करता हूं और दस्तावेज़ पृष्ठभूमि सफेद रंग में है और टेक्स्ट काले रंग में है तो यह लगभग समान सटीकता देता है।
उदाहरण के लिए इनपुट इस फोटो के रूप में है यदि:
फोटो शुरू
फोटो अंत
क्या मैं चाहता हूँ प्राप्त करने में सक्षम करने के लिए है इस तस्वीर के लिए समान सटीकता
ब्लॉक उत्पन्न किए बिना।
कोड मैं Tesseract init और छवि से पाठ निकालने के लिए इस्तेमाल के रूप में नीचे है:
मीटर फ़ाइल में ज फ़ाइल
tesseract::TessBaseAPI *tesseract;
uint32_t *pixels;
में Tesseract
की init के लिए
tesseract = new tesseract::TessBaseAPI();
tesseract->Init([dataPath cStringUsingEncoding:NSUTF8StringEncoding], "eng");
tesseract->SetPageSegMode(tesseract::PSM_SINGLE_LINE);
tesseract->SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
tesseract->SetVariable("language_model_penalty_non_freq_dict_word", "1");
tesseract->SetVariable("language_model_penalty_non_dict_word ", "1");
tesseract->SetVariable("tessedit_flip_0O", "1");
tesseract->SetVariable("tessedit_single_match", "0");
tesseract->SetVariable("textord_noise_normratio", "5");
tesseract->SetVariable("matcher_avg_noise_size", "22");
tesseract->SetVariable("image_default_resolution", "450");
tesseract->SetVariable("editor_image_text_color", "40");
tesseract->SetVariable("textord_projection_scale", "0.25");
tesseract->SetVariable("tessedit_minimal_rejection", "1");
tesseract->SetVariable("tessedit_zero_kelvin_rejection", "1");
,210 छवि
- (void)processOcrAt:(UIImage *)image
{
[self setTesseractImage:image];
tesseract->Recognize(NULL);
char* utf8Text = tesseract->GetUTF8Text();
int conf = tesseract->MeanTextConf();
NSArray *arr = [[NSArray alloc]initWithObjects:[NSString stringWithUTF8String:utf8Text],[NSString stringWithFormat:@"%d%@",conf,@"%"], nil];
[self performSelectorOnMainThread:@selector(ocrProcessingFinished:)
withObject:arr
waitUntilDone:YES];
free(utf8Text);
}
- (void)ocrProcessingFinished0:(NSArray *)result
{
UIAlertView *alt = [[UIAlertView alloc]initWithTitle:@"Data" message:[result objectAtIndex:0] delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alt show];
}
से पाठ करें को लेकिन मैं नंबर प्लेट छवि के लिए उचित उत्पादन नहीं मिलता है या तो यह शून्य है या यह छवि के लिए कुछ कचरा डेटा देता है।
और यदि मैं छवि का उपयोग करता हूं जो पहली बार यानी काला रंग के साथ काले रंग की पृष्ठभूमि है तो उत्पादन 89 से 9 5% सटीक है।
कृपया मेरी मदद करें।
किसी भी सुझाव की सराहना की जाएगी।
अद्यतन
धन्यवाद लिंक प्रदान करने के लिए @jcesar करने के लिए और भी pribluda @konstantin को बहुमूल्य जानकारी और मार्गदर्शन प्रदान करने के लिए।
मैं छवियों को उचित काले और सफेद रूप (लगभग) में परिवर्तित करने में सक्षम हूं।और इसलिए सभी छवियों के लिए मान्यता बेहतर है :)
छवियों के उचित बिनराइजेशन के साथ मदद की ज़रूरत है। किसी भी विचार की सराहना की जाएगी
शायद आप पाठ को पहचानने की कोशिश करने से पहले छवि में हेरफेर करने का प्रयास कर सकते हैं, उदाहरण के लिए हर काले रंग (या काले रंग के करीब) पिक्सेल रंग को सफेद में बदलें। अभी मेरे पास ऐसा करने के लिए उद्देश्य-सी कोड नहीं है, लेकिन मुझे यकीन है कि यह किया जा सकता है। – jcesarmobile
मेरे पास हालांकि इसके लिए है लेकिन यहां पर मैं इसे लागू करने में सक्षम नहीं हूं। –
स्वीकृत उत्तर http://stackoverflow.com/questions/9977905/change-a-color-in-a-uiimage – jcesarmobile