2017-09-03 1 views
0

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:

enter image description here

+2

peut-être que [ce lien] (http://www.danvk.org/2015/01/11/training-an-ocropus-ocr-model.html) sera utile – sturkmen

Répondre

1

Si vous lisez la documentation Tesseract vous verrez que le moteur de Tesseract fonctionne mieux avec des textes en une seule ligne dans un carré. Le passage de l'image de réception entière réduit la précision du moteur. Ce que vous devez faire est d'utiliser le nouveau framework iOS CITextFeature pour détecter les textes de votre reçu dans plusieurs blocs d'images. Alors seulement vous pouvez passer ces images à tesseract pour le traitement.