赞
踩
现在利用python来进行图片的文字识别较为普遍,但是如果我们利用常用的家庭电脑来识别,需要的时间比较长,达到20~30s, 但是如果我们采用javacv这个视觉处理库来
实现图片的识别和文字定位,在同样的电脑配置中需要的时间可以减缩至5s以下,大大提高了工作效率,以下内容为如何利用javacv视觉库处理获取图片上的文字以及文字
在图片的坐标。已成功调试运行的Demo(windows平台)javacv图片文字定位https://blog.csdn.net/qq_37307077/article/details/111408748_Javacv大图找小图-Java文档类资源-CSDN下载可下载
1.下载好已训练好的中文语言包chi_sim.traineddata,需要其他语言包可到github上下载。
2.准备好windows、Linux、max不同操作平台上的javacv api(下载路径javacv图片文字识别各操作平台的apijar包_javacv文字识别-Java文档类资源-CSDN下载);
3.上代码。
获取图片中所有文字:
- public class ImageOcr {
- public static void main(String[] args) throws Exception{
- System.out.println("开始识别");
- long starttime = System.currentTimeMillis();
- //获取当前程序执行绝对路径。
- String currentfile=System.getProperty("user.dir");
- String text = Ocr("chi_sim", currentfile, currentfile+"/screencap.png");
- System.out.println("discriminate interval:" + (System.currentTimeMillis() - starttime) + ",ocr text:" + text);
- }
-
- public static String Ocr(String lang, String langpath, String imageurl) throws UnsupportedEncodingException{
- //创建字节容器。
- BytePointer outtext;
- //启动识别器
- TessBaseAPI ocrapi = new TessBaseAPI();
- //初始化识别器的语言包
- if (ocrapi.Init(langpath, lang) != 0) {
- System.out.println("Could not initialize tesseract");
- return null;
- }
- //读取源图片
- PIX image = pixRead(imageurl);
- //识别器装入图片
- ocrapi.SetImage(image);
- //识别器识别进行段。
- outtext = ocrapi.GetUTF8Text();
- try {
- return outtext.getString("utf-8");
- } finally {
- //最后释放资源
- ocrapi.End();
- outtext.deallocate();
- pixDestroy(image);
- }
- }
- }
4.编译运行效果显示
用window下的cmd,编译运行如下:
源图片 : 编译识别:
获取图片上每一行文字的在图片上坐标,效果如下:
获取图片上指定文字的坐标,效果如下:
5.总结
由于时间仓促,并没有对语言包进行过多的训练,但识别效果还是不错的,如果图片出现比较多的色块,识别效果并没那么好,当然,你可以通过代码对图片的进行灰度化处理,
这样也可以有很好的识别效果。由于自身所从事的手机自动化工作,为了更好地处理手机屏幕上的图片,获取到更加精准的手机屏幕信息,减轻工作强度,所以此代码操作
适用于手机截屏的图片,你也可以识别其他图片的信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。