Ich benutze derzeit Tesseract, um Quittungen zu scannen. Die Qualität war nicht gut, also lese ich diesen Artikel, wie man es verbessert: https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality#noise-removal. Ich habe Größenanpassung, Schräglagenkorrektur (Ausrichtung) und Gaußsches Weichzeichnen implementiert. Aber keiner von ihnen scheint einen positiven Effekt auf die Genauigkeit der OCR zu haben, außer der Entzerrung. Hier ist mein Code für Größenanpassung und Gaußsche Unschärfe. Mache ich etwas falsch? Wenn nicht, was kann ich noch tun, um zu helfen?Verbesserung der Tesseract-OCR-Qualität schlägt fehl
Code:
+(UIImage *) prepareImage: (UIImage *)image{
//converts UIImage to Mat format
Mat im = cvMatWithImage(image);
//grayscale image
Mat gray;
cvtColor(im, gray, CV_BGR2GRAY);
//deskews text
//did not provide code because I know it works
Mat preprocessed = preprocess2(gray);
double skew = hough_transform(preprocessed, im);
Mat rotated = rot(im,skew* CV_PI/180);
//resize image
Mat scaledImage = scaleImage(rotated, 2);
//Guassian Blur
GaussianBlur(scaledImage, scaledImage, cv::Size(1, 1), 0, 0);
return UIImageFromCVMat(scaledImage);
}
// Organization -> Resizing
Mat scaleImage(Mat mat, double factor){
Mat resizedMat;
double width = mat.cols;
double height = mat.rows;
double aspectRatio = width/height;
resize(mat, resizedMat, cv::Size(width*factor*aspectRatio, height*factor*aspectRatio));
return resizedMat;
}
Receipt:
vielleicht [dieser Link] (http://www.danvk.org/2015/01/11/training-an-ocropus-ocr-model.html) wird hilfreich sein – sturkmen