java做图文识别

article/2025/6/26 3:15:57

现在的世界,什么都需要人工智能AI进行处理,那么,对于Java程序猿来说,是不是有些工作是不是就不能胜任呢,答案是显然是不一定的,对于图片识别来说,这个任务就可以使用Java进行开发,虽然效率可能不是最好的,但是,结果是一致的。
下面我就开始出大招了
第一步,添加技能点
如果需要进行图片识别,那么肯定需要识别的插件或者是一个库呀,不然程序怎么清楚是识别那些东西,识别是中文还是英文,对不对,这个时候呢,就出现了“野怪”——ocr,给我们提供支持,从而进行升级添加技能点
什么事OCR,这个大家可以自行百度,其主要作用就是为我们进行识别图片中的文字的一个重要角色,下载方式直接百度tesseract下载就行
下载完成后,需要进行配置环境变量,我这也不进行过多描述,可以自行百度,如果需要,可后续追加一篇配置下载的博客说明
那么野怪位置找到了,我们就需要开始刷怪升级了
第二步,添加词库
需要识别文字,那么武器必不可少,如果没有装备,野怪也是能秒人的,所以,我们需要去下载一些词库,例如中文词库:chi_sim.traineddata,下载方式也可在百度上进行下载下来,下载完成后,在刚刚安装的tesseract下找到tessdata文件夹,将其复制过来就可以了,我的是D盘下,所以位置如下图
在这里插入图片描述
移动过来后,我们就有武器了,开始刷怪
第三步,开大,结束战斗(前方高能)

    public static String IdentifyThePicture(){//识别图片System.out.println("开始识别");long starttime = System.currentTimeMillis();//获取当前程序执行绝对路径。String text = orcde("normal", "D:\\tesseract-ocr\\tessdata", "D://JT//1.png");System.out.println("discriminate interval:" + (System.currentTimeMillis() - starttime) + ",ocr text:" + text);return text;}
public static String orcde(String lang, String langpath, String imageurl){// 识别图片的路径(修改为自己的图片路径)String path = imageurl;// 语言库位置(修改为跟自己语言库文件夹的路径)String lagnguagePath = langpath;File file = new File(path);ITesseract instance = new Tesseract();//设置训练库的位置instance.setDatapath(lagnguagePath);//chi_sim :简体中文, eng    根据需求选择语言库instance.setLanguage(lang);String result = null;try {long startTime = System.currentTimeMillis();result =  instance.doOCR(file);long endTime = System.currentTimeMillis();System.out.println("Time is:" + (endTime - startTime) + " 毫秒");} catch (TesseractException e) {e.printStackTrace();}System.out.println("result: ");System.out.println(result);return result;}

运行结果如下:
在这里插入图片描述
图片中的内容如下:
在这里插入图片描述
你是不是发现有两个字不对,这个咱暂时不告诉你,请继续往下看
代码看起来是不是很简单,(你心里觉得是这样想的)因为这是有野怪,如果没有野怪怎么办,或者等级不够怎么办(1级单挑100级?)显然是不可以的,这个时候就需要进行训练了,训练啥,训练词库,怎么训练,如下:
第一步,下载jTessBoxEditor_jb51(找到新手训练营)
jTessBoxEditor_jb51这是啥东西,我告诉你,这个是训练词库必须要用的一个jar包,但是呢,他不是在项目里面使用的,而是独立运行的,怎么使用,待会就来
第二步,生产词条(找到野怪)
怎么生产词条,也就将你需要识别的一些文字,做成一个jpg的图片,怎么做,直接截图呗,然后保存为jpg就行了
是不是说好简单,还没完呢!
有了jpg图片后,需要对其改变格式,不能手动改变后缀,需要通过格式工厂,或者在线转换插件进行转换,将jpg的图片转换为tif的文件格式,然后启动我们的新手训练营jTessBoxEditor_jb51,(里面有一个启动脚本的了)
在这里插入图片描述
就是上面圈住的这个bat脚本,启动后,会出来一个Java窗口
在这里插入图片描述
先过去将刚刚的图片更改图片名字,这个是有要求的

tif文面命名格式[lang].[fontname].exp[num].tif
lang是语言           fontname是字体
比如我们要训练自定义字库myfontlab      字体名normal
那么我们把图片文件重命名 myfontlab.normal.exp0.jpg在转tif。

在这里插入图片描述

这个时候呢,我们需要打开黑命令框(CMD)输入命令生成box文件

tesseract myfontlab.normal.exp0.jpg myfontlab.normal.exp0 -l chi_sim batch.nochop makebox

运行结果如图
在这里插入图片描述
然后就会产生一个新的文件在该文件夹下
在这里插入图片描述
这个时候就需要用的我们的jTessBoxEditor_jb51了,点击open,选择刚刚处理过得tif文件图片得到下面结果数据
在这里插入图片描述
在这里插入图片描述

然后开始修改我们不对的字第5行的窝应该是我,所以需要进修改,选择改行,
在这里插入图片描述
然后点击save进保存,这个时候就词条就生产完毕了需要导入到我们的词库中去

第三步,词条添加到词库中(捡装备了)
cmd中输入命令,生成.tr文件

tesseract  myfontlab.normal.exp0.jpg  myfontlab.normal.exp0  nobatch box.train

在这里插入图片描述
再输入命令,生成unicharset文件

unicharset_extractor myfontlab.normal.exp0.box

在这里插入图片描述

新建一个font_properties.txt文件
里面内容写入 normal 0 0 0 0 0 表示默认普通字体
运行命令

shapeclustering -F font_properties.txt -U unicharset myfontlab.normal.exp0.tr

在这里插入图片描述

mftraining -F font_properties.txt -U unicharset -O unicharset myfontlab.normal.exp0.tr

在这里插入图片描述

cntraining myfontlab.normal.exp0.tr

在这里插入图片描述
目录下会生成对应下列五个文件,在这五个文件前加上normal.进行重命名
在这里插入图片描述
合并五个文件,此时目录下的normal.traineddata 就是训练好的字库文件
执行 命令

combine_tessdata normal. 

在这里插入图片描述
最后就产生了一个新的文件,这就是刚刚训练出来的词库
在这里插入图片描述
最后将新的词库放人的OCR中就行了,怎么放,教你
把normal.traineddata 复制到Tesseract-OCRt程序目录下的“tessdata”目录,
在Tesseract-OCRt程序目录下执行

tesseract.exe myfontlab.normal.exp0.jpg out –l normal

在这里插入图片描述
这个时候,词库就好了,再运行一下试试
在这里插入图片描述
完美,图文识别成功

疯狂打架去吧,再也不用担心打不过了 ^_^

以上内容可能有不正确的地方,望大佬指正,如果需要下载配置介绍,欢迎评论去留言哦
附上pom文件依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.play</groupId><artifactId>play</artifactId><version>0.0.1-SNAPSHOT</version><name>play</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--tesseract-platform里面包含了所有tesseract所需要的jar--><dependency><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>tesseract-platform</artifactId><version>3.04.01-1.3</version></dependency><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.4.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

http://chatgpt.dhexx.cn/article/cwNsF8wR.shtml

相关文章

【计算机视觉】人脸识别--人脸识别技术综述

https://www.cnblogs.com/huty/p/8517691.html &#xfeff;参考&#xff1a;http://www.xuehuile.com/thesis/9a81f680054441ad907934b07b465c8e.html&#xff0c;本文做了相关修改。 1 人脸识别技术概述 近年来&#xff0c;随着计算机技术的迅速发展&#xff0c;人脸自动识…

厉害了,用 Java 也能实现图片识别!

点击上方蓝色“终端研发部”&#xff0c;选择“设为星标” 学最好的别人&#xff0c;做最好的我们 最近闲来无事研究了一下用 Java 如何模拟浏览器的行为&#xff0c;在实验登录的步骤时碰到了识别验证码的问题&#xff0c;于是在网上查找了关于 Java 如何进行图片识别验证码&a…

图片验证码识别教程技术原理分析

面对技术这片大海&#xff0c;我们都是一个渔民&#xff0c;三天打鱼&#xff0c;两天结网。我是把过去自己所掌握的所有技术总结成一张网&#xff0c;若一个技术干货分享的东西离我的网还太远&#xff0c;我就会放弃去了解。因为如果不能连结到这张网中&#xff0c;形成一个节…

Java OCR tess4j 图片识别技术(三)

先贴代码段 tess4j整个的代码调用到时是蛮简单的。 1.先去官网下载&#xff1a;http://tess4j.sourceforge.net/ 我的是Tess4J-3.4.0版&#xff0c;目录如下: 2.新建项目&#xff0c;将lib,tessdata,src复制到新建的项目中 3.将lib下的jar包加到build path 中 项目目录…

Java图像识别技术:Test4J

简介 做图像识别&#xff0c;可以使用TESSERACT-OCR来实现&#xff0c;但是该方式需要下载软件&#xff0c;在电脑上安装环境&#xff0c;移植性不高&#xff0c;使用Tess4J只需要下载相关Jar包&#xff0c;导入项目&#xff0c;再把项目封装好就可以处处运行了。 Test4J官网&…

计算机识别图像的原理,什么是图像识别技术?图像识别技术原理介绍

图像识别技术是人工智能的一个重要领域。它是指对图像进行对象识别,以识别各种不同模式的目标和对像的技术。 图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。图像识别,顾名思义,就是对图像做出各种处理、分析,最终识别我们所要研究的目标。今天所…

图片识别——需求篇

最近由于工作的关系,学习了一些关于图片识别的知识,并成功用于解决实际问题当中,特此一一记录下来,以备后用,同时希望对大家有用。 场景 企业端用户在注册时,会上传一下公司的Logo。上传的步骤是:选择本地Logo图片,点上传,图片被上传至公司图片服务器(此时这张图片有…

Ubuntu重启黑屏——Intel微码更新兼容性问题

9月13日前后对Ubuntu 22.04进行软件更新&#xff0c;再开机后经过grub直接黑屏&#xff0c;没有任何报错信息。 对于默认不显示Grub菜单的机器&#xff0c;可以在闪过紫屏前长按Esc进入Grub菜单。由于此时仍能进入Grub菜单界面&#xff0c;此处优先选择使用自带的Recovery Mod…

华为-微码开发入门 - 环境搭建

搭建环境 安装 Node.js 前言&#xff1a; We码的整个开发依赖 Node.js 环境&#xff0c;我们需要对 Node.js 做一个简单的了解。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;类似Java的JRE&#xff0c;JRE有一个称为Java Virtual Machine&#xff08…

Brocade FC微码升级

一、组网图 无 二、问题描述 在实际生产环境下,不少项目都存在着 Brocade FC 交换机 Firmware 版本过旧的问题&#xff0c;需要将 Firmware 版本升级至新版本。 三、过程分析 具体升级流程: 四、解决方法 1.搭建FTP环境 搭建FTP环境可以下载3cdaemon-ftp的免安装版小工具…

IBM X3550 m4 微码升级

Ibm pc server升级顺序为IMM->UEFI->DSA(->FPGA) 微码下载 进入IBM官网->支持->fix central 选择升级设备对应的微码或补丁 PCserver 微码升级先升级IMM 选择IMM 选择最新版下载&#xff0c;升级测试本机IMM版本为1.50 最新6.60&#xff0c;时间相隔六年多&am…

微信小程序生成二微码(JAVA)

前段时间在项目中&#xff0c;写了一个生成微信二微码的功能&#xff0c;之所以会开发这个功能&#xff0c;是因为我们做的小程序要进行推广让用户扫我们做的小程序的二微码进行去体验&#xff0c;功能实现的场景大概是&#xff1a; 后台生成小程序二微码,返回到后台页面进行展…

联想SR850系列微码升级

1. 通过服务器管理口&#xff08;X-clarity controller&#xff09;收集日志.方法是使用直连线(此网口可自适应 连接方式)将此网口连接于一台终端机(笔记本或台式机). 2. .将笔记本的网卡 IP 设置为与“192.168.70.125”处于同网段的 IP&#xff08;如&#xff1a; 192.168.70.…

IBM V7000存储升级微码

一、前期准备 目前使用的V7000型号为2076-124,没有扩展柜,当前版本为6.4.1.4,比较老旧,需要升级到相对新的版本。 1.确定当前机器可升级的最高版本 打开网页 http://www-01.ibm.com/support/docview.wss?rs=591&uid=ssg1S1003850 ,可以看到下表,可以看到2076-124这个…

hpux-hp superdome 9000 升级微码

新加入cell板&#xff0c;查看、升级CELL板微码。 一.查看主机微码 升级xyy主机&#xff0c;用Lan console连接到MP卡中&#xff0c;进入Command Menu菜单中&#xff0c;执行命令sysrev检查当前所插的CELL板微码 可以看出&#xff0c;当前5块CELL板安装在0、2、3、4、6槽位&am…

linux下查看硬盘微码,什么是固件或微码,以及如何更新我的硬件?

固件是一种运行在硬件设备上的软件&#xff0c;用于执行低级任务。 例如&#xff0c;从电视遥控器到电脑硬盘驱动器到空中Drone的所有内容都运行自己的固件。 微码基本上是你的CPU的固件。 什么是固件&#xff1f; 软件是指在设备上运行的程序&#xff0c;应用程序和其他计算机…

linux查看cpu微码命令,下载 Linux * 处理器微码数据文件

适用于 Linux * 的英特尔处理器微套件软件包 CPU 微码是一种更正现有系统中的特定勘误表的机制。 应用微代码更新的一般首选方法是使用系统 BIOS,但对于英特尔处理器的一部分,这可以在运行时完成 使用操作系统。此软件包包含的处理器 支持对微码更新进行操作系统加载。 此软件…

uni-app 开发华为 微码小程序

uni-app 开发华为 微码小程序 文章目录 uni-app 开发华为 微码小程序背景通过uni-app生成一个h5应用通过微码开发者工具新建一个微码应用进阶官方解决方案 背景 之前一直使用uni-app开发小程序、H5应用。近期公司有意向使用华为的welink产品作为移动OA。正好近期项目不是特别忙…

linux查看cpu微码命令,如何在Linux上安装/更新Intel微码固件

如果你是一个 Linux 系统管理方面的新手,如何在 Linux 上使用命令行方式去安装或者更新 Intel/AMD CPU 的微码固件呢? 微码microcode就是由 Intel/AMD 提供的 CPU 固件。Linux 的内核可以在引导时更新 CPU 固件,而无需 BIOS 更新。处理器的微码保存在内存中,在每次启动系统…

Brocade 交换机微码升级方法大全

1 通过Brocade交换机自带U盘升级 1.1准备微码 将交换机微码解压缩后放到U盘的firmware目录下&#xff0c;注意firmware目录下只能包含一层目录&#xff0c;例如&#xff1a;brocade/firmware/v6.4.2b。 1.2用单网线通过IE升级 将微码复制到U盘的firmware路径下&#xff0c;并…