当前位置:   article > 正文

实现图片中文的识别和获取图片上文字的坐标(java实现)

实现图片中文的识别和获取图片上文字的坐标(java实现)

 实现图片中文的识别和获取图片上文字的坐标(java实现)

           现在利用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.上代码。

            获取图片中所有文字:

  1. public class ImageOcr {
  2. public static void main(String[] args) throws Exception{
  3. System.out.println("开始识别");
  4. long starttime = System.currentTimeMillis();
  5. //获取当前程序执行绝对路径。
  6. String currentfile=System.getProperty("user.dir");
  7. String text = Ocr("chi_sim", currentfile, currentfile+"/screencap.png");
  8. System.out.println("discriminate interval:" + (System.currentTimeMillis() - starttime) + ",ocr text:" + text);
  9. }
  10. public static String Ocr(String lang, String langpath, String imageurl) throws UnsupportedEncodingException{
  11. //创建字节容器。
  12. BytePointer outtext;
  13. //启动识别器
  14. TessBaseAPI ocrapi = new TessBaseAPI();
  15. //初始化识别器的语言包
  16. if (ocrapi.Init(langpath, lang) != 0) {
  17. System.out.println("Could not initialize tesseract");
  18. return null;
  19. }
  20. //读取源图片
  21. PIX image = pixRead(imageurl);
  22. //识别器装入图片
  23. ocrapi.SetImage(image);
  24. //识别器识别进行段。
  25. outtext = ocrapi.GetUTF8Text();
  26. try {
  27. return outtext.getString("utf-8");
  28. } finally {
  29. //最后释放资源
  30. ocrapi.End();
  31. outtext.deallocate();
  32. pixDestroy(image);
  33. }
  34. }
  35. }

     4.编译运行效果显示

        用window下的cmd,编译运行如下:

源图片 :              编译识别:                                                                                   

    获取图片上每一行文字的在图片上坐标,效果如下:

          

    获取图片上指定文字的坐标,效果如下:

          

          

5.总结
            由于时间仓促,并没有对语言包进行过多的训练,但识别效果还是不错的,如果图片出现比较多的色块,识别效果并没那么好,当然,你可以通过代码对图片的进行灰度化处理,
         这样也可以有很好的识别效果。由于自身所从事的手机自动化工作,为了更好地处理手机屏幕上的图片,获取到更加精准的手机屏幕信息,减轻工作强度,所以此代码操作
         适用于手机截屏的图片,你也可以识别其他图片的信息。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/539465
推荐阅读
相关标签
  

闽ICP备14008679号