我想知道在将图像提供给OCR之前处理图像以获得最佳效果所需的方法。此外,应提供什么字符集以获得最佳结果。目前,我正在开发Xamarin Android应用程序。
以下是我的图像处理代码。
CvInvoke.CvtColor(img, img, ColorConversion.Bgr2Gray);
//CvInvoke.Canny(gray, canny, 100, 50, 3, false);
Size s = new Size(3, 3);
CvInvoke.GaussianBlur(img, img, s, 0, 0, BorderType.Default);
//CvInvoke.FastNlMeansDenoising(img, img, 3, 7, 21);
CvInvoke.AdaptiveThreshold(img, img, 255, AdaptiveThresholdType.MeanC, Emgu.CV.CvEnum.ThresholdType.Binary, 5, 4);
CvInvoke.Threshold(img, img, 0, 255, Emgu.CV.CvEnum.ThresholdType.Otsu);
我正在使用EmguCv库进行处理,以及Tesseract。
下面是我列出白名单的字符集。
_ocr.SetVariable("tessedit_char_whitelist",
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-1234567890 :$/.?,!@#%^&*()_+=\'\";{}[]+");
我想扫描收据,我对这个概念很新。请让我知道你的想法。