Android Tesseract识别数字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuxu820_/article/details/45269239

最近接触到Tesseract,有个感触就是人与人之间的差距可能就在 Google和Baibu 之间

好了,话不多说,关于Tesseract背景什么的我不介绍了

入正题:


step1:

 首先去http://code.google.com/p/tesseract-ocr/downloads/list 下载Tesseract,目前版本是3.02,我用的3.01 。//自行翻墙

//关于如何在Windows以及其它非Android环境下使用 Tesseract ,请自行百度谷歌

另外記得在項目主頁下載相关的語言包,想想如果没有语言包你拿什么识别

以Android端为例,如果需要识别中文,则找到一个  Chinese(simple) 开头  ,如果识别 英文就是 English,其它语言同理

//Android 的JAR包   http://pan.baidu.com/s/1eQjcjse     gcvh

step2:

 将你下载的语言包解压,得到一个traineddata类型的文件,以中文为例,文件名为  "chi_sim.traineddata"   

 放到对应目录下的tessdata目录下

比如我放的目录为  /mnt/sdcard/tesseract

        // 如果这一步没做好   会报错  “java.lang.IllegalArgumentException: Data path must contain subfolder tessdata”

step3:

  

 好了

  该上代码了 

public String doOcr(Bitmap bitmap, String language) {
			TessBaseAPI baseApi = new TessBaseAPI();
			baseApi.init("/mnt/sdcard/tesseract", language);

			int w = bitmap.getWidth();
			int h = bitmap.getHeight();
			Log.e("client_img", w+":"+h);
			//灰度化
			bitmap = convertToGrayscale(bitmap);
			bitmap = Bitmap.createBitmap(bitmap, 130, 70, w-260, h-140);
			
			// 必须加此行,tess-two要求BMP必须为此配置
			//copy改为图的大小产生一个新位图,图像的大小为256位图。true表示产生的图片可以切割。
			bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);     
			baseApi.setImage(bitmap);
			String text = baseApi.getUTF8Text();
			baseApi.clear();
			baseApi.end();
			return text;                
		}

step4:

          

<span style="white-space:pre">	</span>String text_result = new LicensePlate().doOcr(bitmap, "chi_sim");
此处是识别为  "chi_sim"  即  Chinese  simple  简体中文

如果需要识别英文   把"chi_sim"改为"eng"   其它同理  



   這差不多是基本步驟   國內百度的文檔 不是很多   也有幾篇值得借鑒的參考資料   各位可自行百度

  另外可以查看 它的源碼  源碼都自帶說明  仔細看看會帶給你很大提升


如果實在有問題可以  去Google搜英文    看不懂的Google翻譯  


另外給自己留一句話  “保持本心”


猜你喜欢

转载自blog.csdn.net/zhuxu820_/article/details/45269239