利用Java实现的图片中文字识别,你学会了吗?

article/2025/6/26 1:18:23

一. 背景

今天有粉丝向波哥提出了这样一个疑问:给出一张图片,如何利用Java中的技术获取图片中的文字信息?针对这个问题,你有么有解决办法呢?如果你没有想到好的解决思路,也不用怕,看波哥来给你解决这个问题!

二. 解决思路

首先说到读取文件,我们耳熟能详的肯定就是使用I/O流进行文件的读取,但如果是要将图片里面的文字提取出来又该如何去做呢?

哈哈哈,肯定有同学犯难了,其实我们不妨换个思路。

首先我们想一想,文件的底层是不是就是一个二进制文件呢?当我们想要去获取其中的数据时,是不是会有一些二进制规范呢?我们将这种二进制规范解析出来,是否就能得到文字信息了呢?

三. 代码示例

带着这样的疑问,请大家跟波哥一起通过代码来实现一下吧,下面就是波哥给大家提供的实现代码。

public class Imageparse{public static void main (String[] args){//首先我们需要输入获取图片的路径信息,将其每个点位设置为二进制信息Int[][] img = readPic(/*这里输入你的path绝对路径即可*/);//将其转为一个一维数组int[] bits = new int[img.length * img[0].lenght];Int index = 0;for(int i = 0; i < img.lenght;i++){//这段代码是查看解析的二维数组是否正确for(int j = 0;j<img[i].length;j++){bits[index++] = img[i][j];}}//读取数组信息parseUTF(bits);}public static int readPic(String path){//这里我们就需要涉及到去拿去所有的数据  rgb  信息,有一个图片  IO  流BufferedImage image = ImageIO.read(new FileInputStream(new File(path)));//获取这个图片的宽和高int width = image.getWidth();int height = image.getHeight();//创建一个当前图的最大宽高的二维数组int[][] img = new int[height][width];//到这里我们就该去把每个点位赋值for(int i = 0;i<height;i++){for(int j = 0;j<width;j++){Int       rgb       = image.getRGB(j,i);//此时这是一个二进制颜色代码//条件判断颜色转为      RGB      ,例如(255,0,0)int r = (rgb & 0x00ff0000) >>16 ; int g = (rgb & 0x0000ff00) >>8 ;int b = (rgb & 0x000000ff) ;int  a = 0xff /2; if(r > a && g > a && b > a){img[i][j] = 0;}else{img[i][j] = 1;}}}return img;}public static void  parseUTF(int[] bits){int index = 0;int count = 0;for(int j = 0;j<bits.lenght;){if(bits[j]==1){count++;index++;}else{index++;String str = "";if(count == 0){for(int k=1;k<=7;k++){str += bits[index++];}}else {for(int x = 0;x<8-(count+1);x++){str+=bits[index++];}}else{for(int y = 0;y<count-1;y++){index+=2;for(int z = 0;z<6;z++){str+=bits[index++];} }}count = 0;System.out.print((char)Integer.parseInt(str,2));str="";}j=index;}}
}

接下来,来跟随波哥看看代码实际展现的最终效果吧:

四. 测试图片

下面这种图片,供大家用于测试上面的代码,你可以把波哥上面的代码运行起来,试试看能不能把下面图片中的文字识别出来。

如果你识别出来的结果是一首诗就对了哦。


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

相关文章

Python利用百度AI图像识别技术识别图片

准备工作&#xff1a;在百度云控制台创建文字识别模块&#xff1b;装备几张简单的有文字的图片。 百度官方文档&#xff1a;http://ai.baidu.com/docs#/OCR-API/7e4792c7 然后进入编码阶段&#xff1a; 如下代码获取access_token client_id和client_secret是百度云列表提供…

java做图文识别

现在的世界&#xff0c;什么都需要人工智能AI进行处理&#xff0c;那么&#xff0c;对于Java程序猿来说&#xff0c;是不是有些工作是不是就不能胜任呢&#xff0c;答案是显然是不一定的&#xff0c;对于图片识别来说&#xff0c;这个任务就可以使用Java进行开发&#xff0c;虽…

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

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。正好近期项目不是特别忙…