如何准备要通过tesseract OCR识别的图像 [英] How to prepare image to recognize by tesseract OCR

查看:173
本文介绍了如何准备要通过tesseract OCR识别的图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Tesseract OCR提取仪表读数... tesseract需要识别正确的白色背景和黑色数字。我试图对图像进行阈值处理

  src:= cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE); 


dst:= cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);


cvThreshold(src,dst,50,250,CV_THRESH_BINARY);

但是我没有得到正确的结果。我该怎么办?
我在Delphi-OpenCV中使用了deplhi6

解决方案

您可以将此图像处理如下:



 对于jy:= 0到bm。对ix的高度:= 0至bm。宽度开始于cor:= bm.Canvas.Pixels [ix,jy]; R:= GetRValue(Cor); G:= GetGValue(Cor); B:= GetBValue(Cor);如果g> 38,则bm.Canvas.Pixels [ix,jy]:= clWhite else bm.Canvas.Pixels [ix,jy]:= clBlack; end;  


作为输出,我得到以下图像:



希望这会有所帮助。


I use Tesseract OCR to to extract meter reading... tesseract needs to recognize right white background and black numbers.. I tried to threshold image

src := cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE);


dst := cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);


cvThreshold(src, dst, 50, 250, CV_THRESH_BINARY);

but i didn't get the right result.. what should I do? I use deplhi6 with Delphi-OpenCV https://github.com/Laex/Delphi-OpenCV

解决方案

You can treat this image as follows:

  for jy:= 0 to bm.Height do
   for ix := 0 to bm.Width do
    begin
      cor:=bm.Canvas.Pixels[ix,jy];

      R:=GetRValue(Cor);
      G:=GetGValue(Cor);
      B:=GetBValue(Cor);

      if g>38 then
        bm.Canvas.Pixels[ix,jy]:=clWhite
      else
        bm.Canvas.Pixels[ix,jy]:=clBlack;
    end;

As an output I got the following image:

Hope this helps.

这篇关于如何准备要通过tesseract OCR识别的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆