J'utilise actuellement tesseract pour numériser des tickets. La qualité n'était pas bonne donc j'ai lu cet article sur la façon de l'améliorer: https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality#noise-removal. J'ai implémenté le redimensionnement, le redressement (alignement) et le flou gaussien. Mais aucun d'entre eux semble avoir un effet positif sur la précision de l'OCR, sauf le redressement. Voici mon code pour le redimensionnement et le flou gaussien. Est-ce que je fais quelque chose de mal? Si non, que puis-je faire d'autre pour aider?Amélioration de la qualité OCR Tesseract échoue
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;
}
Réception:
peut-être que [ce lien] (http://www.danvk.org/2015/01/11/training-an-ocropus-ocr-model.html) sera utile – sturkmen