質問のコピーまたは繰り返しとしてマークを付ける前に、まず質問全体をお読みください。
私はpressentで行うことができます以下のとおりです:
- 画像を取得し、OCRの目的の部分をトリミングします。
tesseract
およびを使用して画像を処理しleptonica
ます。- 適用されたドキュメントがチャンクにトリミングされる場合、つまり画像ごとに1文字の場合、96%の精度が得られます。
- そうしないと、ドキュメントの背景が白色でテキストが黒色の場合、ほぼ同じ精度が得られます。
たとえば、入力が次の写真の場合:
写真スタート
写真終了
私が欲しいのは、
ブロックを生成することなく、この写真に対して同じ精度を得ることができることです。
tesseractを初期化し、画像からテキストを抽出するために使用したコードは次のとおりです。
正八胞体の初期化のために
.hファイル内
tesseract::TessBaseAPI *tesseract;
uint32_t *pixels;
.mファイル内
tesseract = new tesseract::TessBaseAPI();
tesseract->Init([dataPath cStringUsingEncoding:NSUTF8StringEncoding], "eng");
tesseract->SetPageSegMode(tesseract::PSM_SINGLE_LINE);
tesseract->SetVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
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");
画像からテキストを取得する場合
- (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];
}
しかし、ナンバープレート画像がnullであるか、画像にガベージデータが含まれているため、適切な出力が得られません。
そして、最初の画像、つまりテキストが黒の白い背景の画像を使用すると、出力は89〜95%正確になります。
私を助けてください。
任意の提案をいただければ幸いです。
アップデート
リンクを提供してくれた@jcesarと、貴重な情報とガイドを提供してくれた@konstantinpribludaに感謝します。
画像を適切な白黒形式に変換することができます(ほぼ)。したがって、認識はすべての画像で優れています:)
画像の適切な2値化についてサポートが必要です。どんなアイデアでも大歓迎です