2017-09-03 6 views
0

현재 tesseract를 사용하여 영수증을 검사합니다. 품질이 좋지 않아 개선 방법에 대한이 기사를 읽었습니다 : https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality#noise-removal. 크기 조정, 기울이기 보정 (정렬) 및 가우시안 흐림 효과를 구현했습니다. 그러나 이들 중 어느 것도 기울임 보정을 제외하고는 OCR의 정확성에 긍정적 인 영향을 미치는 것으로 보이지 않습니다. 다음은 크기 조정 및 가우시안 블러에 대한 코드입니다. 내가 뭐 잘못하고 있니? 그렇지 않다면 도움을 줄 수있는 다른 방법은 무엇입니까?Tesseract OCR 품질 향상 실패

코드 :

+(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; 
} 

영수증 : 당신은 당신이 정팔 포체 엔진이 광장에서 한 줄의 텍스트에서 가장 잘 작동 보게 될 정팔 포체 설명서를 읽어 보면

enter image description here

+2

[이 링크] (http://www.danvk.org/2015/01/11/training-an-ocropus-ocr-model.html)가 도움이 될 수 있습니다. – sturkmen

답변

1

. 영수증 이미지 전체를 전달하면 엔진의 정확성이 떨어집니다. 새로운 iOS 프레임 워크 CITextFeature를 사용하여 영수증의 텍스트를 여러 이미지 블록으로 감지해야합니다. 그런 다음 처리를 위해 이미지를 tesseract로 전달할 수 있습니다.