整合Tess4J图文识别技术

仓库地址:https://gitee.com/z3inc/tess4j-demo.git

1. OCR图文识别介绍


OCR(全称 Optical Character Recognition,直译为光学字符识别)用于图片文字识别,例如 提取图片中车牌号等等。

Java中实现OCR的技术方案有:

  • 百度OCR,花米
  • Tesseract-OCR,Google维护的开源OCR引擎,支持Java,Python等语言调用
  • Tess4J,封装了Tesseract-OCR ,支持Java调用。(使用Tess4J需要不同的词库文件进行支撑(如 汉语词库)

2. Tess4J示例代码


Tess4J是一个Java库,它对谷歌的Tesseract-OCR进行了再封装,使用程度上更简单。

Tesseract OCR是一个开源的光学字符识别(OCR)引擎,它能够识别图像中的文本,并将其转换为可编辑的格式。Tess4J使得开发者可以在Java应用程序中轻松集成OCR功能。

Tess4J官网:https://tess4j.sourceforge.net/usage.html

1、添加依赖坐标

<dependencies><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version></dependency><!--tess4j--><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.1.1</version></dependency>
</dependencies>

2、导入中文字体库,将tessdata放到一个没有中文、特殊字符、空格的目录下

下载地址:https://download.csdn.net/download/qq_46921028/89307556

image-20240514202924206

3、准备一张带文字的图片

image-20240514204337197

4、编写测试

package cn.aopmin.tess4j;import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import org.junit.Test;import java.io.File;/*** 测试ORC图片文字识别:* 我们这里使用的是Tess4j类库(它封装了谷歌的Tesseract-OCR,也是支持Java调用的)** @author 白豆五* @since 2024/5/14*/
public class Tess4jTest {/*** 测试图片文字提取*/@Testpublic void testScanText() {try {// 获取本地图片File file = new File("D:/1111/pic1.png");// 创建Tesseract对象ITesseract tesseract = new Tesseract();// 设置字体库路径tesseract.setDatapath("D:/1111/tessdata");// 中文识别tesseract.setLanguage("chi_sim");// 执行ocr识别String result = tesseract.doOCR(file);// 替换回车和tal键 ,让结果在一行显示result = result.replaceAll("\\r|\\n", "").replaceAll(" ", "");System.out.println("识别的结果为:" + result);} catch (Exception e) {e.printStackTrace();}}
}

控制台打印结果:

image-20240514204250040

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/12235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DGC-GNN 配置运行

算法 DGC-GNN&#xff0c;这是一种全局到局部的图神经网络&#xff0c;用于提高图像中2D关键点与场景的稀疏3D点云的匹配精度。与依赖视觉描述符的方法相比&#xff0c;这种方法具有较低的内存需求&#xff0c;更好的隐私保护&#xff0c;并减少了对昂贵3D模型维护的需求。DGC-…

创建继承自QObject的线程:一个详细指南

目录标题 步骤 1&#xff1a;创建一个新的QObject子类步骤 2&#xff1a;在新的QObject子类中实现工作代码步骤 3&#xff1a;创建一个新的QThread对象步骤 4&#xff1a;管理线程的生命周期步骤 5&#xff1a;处理线程间通信结论 在Qt中&#xff0c;线程可以通过继承QThread类…

基于51单片机的时钟万年历—可农历显示

基于51单片机的时钟万年历 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1、可以显示年、月、日、时、分、秒、星期、农历&#xff1b; 2、按键可以设置闹钟及报警&#xff1b; 3、按键可以调整时…

[Java EE] 文件IO (二):文件内容读写-----数据流

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

(2024,MambaOut,Mamba 适合长序列,区分指标,不适合分类,适合检测和分割)视觉真的需要 Mamba 吗?

MambaOut: Do We Really Need Mamba for Vision? 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 3. 概念讨论 3.1 Mamba 适合哪些任务&#xff1f; 3.2 视觉识别任…

AtCoder Regular Contest 177

A - Excange 题意 用这些零钱能否不找零地买这些物品 思路 因为 500 5 100 10 50 50 10 500 1 5005\times 10010\times 5050\times 10500\times 1 5005100105050105001。 所以说&#xff0c;我们这道题可以采用贪心算法&#xff0c;优先取大的减去目前零钱最大的…

小美的区间删除

因为结尾0的个数取决于有多少对 ( 2 , 5 ) (2,5) (2,5) 相乘&#xff0c;那么对于下面例题&#xff0c;解题思路为&#xff1a; 1、将每个数字中的2和5剥离出来&#xff0c;然后用两个数组进行记录&#xff0c;然后其子数 ( 2 , 5 ) (2,5) (2,5)组成对至少为k个。 2、遍历每一…

echarts实现金价可视化大屏(项目实战)

前言 最近由于某种原因参加了一个比赛&#xff0c;三天时间肝出来一个可视化大屏项目&#xff08;无后端&#xff09;&#xff0c;代码已开源&#xff0c;但是还在比赛期间不知道会不会影响到 技术使用&#xff1a;html&#xff0c;css&#xff0c;js&#xff0c;echarts&#…

Jmeter+Grafana+Prometheus搭建压测监控平台

本文不介绍压测的规范与技术指标&#xff0c;本文是演示针对Jmeter如何将压测过程中的数据指标&#xff0c;通过Prometheus采集存储&#xff0c;并在Granfan平台进行仪表盘展示; 介绍 系统压测属于日常项目开发中的一个测试环节&#xff0c;使用测试工具模拟真实用户行为&…

Vue3实战笔记(18)—pinia注意事项和经验总结

文章目录 前言一、解构的注意事项二、注意创建和使用顺序总结 前言 在采用Pinia进行状态管理时&#xff0c;总结了一些关键注意事项与实战经验&#xff0c;旨在优化开发流程并确保高效利用其功能。这包括了正确规划存储结构、充分利用响应式优势、妥善处理模块化以促进代码可维…

Springboot+MybatisPlus如何实现分页和模糊查询

实现分页查询的时候我们需要创建一个config配置类 1、创建MybatisPlusConfig类 Configuration //表明这是一个配置类 ConditionalOnClass(Value{PaginationInterceptor.class} //ConditionalOnClass:当指定的类存在时&#xff0c;才会创建对应的Bean // 这里当PaginationInt…

Go-Zero定义API实战:探索API语法规范与最佳实践(五)

前言 上一篇文章带你实现了Go-Zero模板定制化&#xff0c;本文将继续分享如何使用GO-ZERO进行业务开发。 通过编写API层&#xff0c;我们能够对外进行接口的暴露&#xff0c;因此学习规范的API层编写姿势是很重要的。 通过本文的分享&#xff0c;你将能够学习到Go-Zero的API…

测试项目实战--安享理财2(Jmeter接口测试)

说明&#xff1a; 1.访问地址&#xff1a; 本项目实战使用的是传智播客的安享理财项目&#xff08;找了半天这个项目能免费用且能够满足测试实战需求&#xff09; 前台&#xff1a;http://121.43.169.97:8081/ 后台&#xff1a;http://121.43.169.97:8082/ &#xff08;点赞收藏…

前端工程化 - 快速通关 - vue

目录 npm 2.1环境 2.2命令 2.3使用流程 Vite 3.1简介 3.2实战 Vue3 4.1组件化 4.2SFC 4.3Vue工程 4.4基础使用 4.5进阶用法 4.6总结 npm npm 是 nodejs 中进行 包管理 的工具&#xff1b; 下载&#xff1a;Node.js — Run JavaScript Everywhere 2.1环境 ●安…

KubeKey 部署 K8s v1.28.8 实战

在某些生产环境下&#xff0c;我们仅需要一个原生的 K8s 集群&#xff0c;无需部署 KubeSphere 这样的图形化管理控制台。在我们已有的技术栈里&#xff0c;已经习惯了利用 KubeKey 部署 KubeSphere 和 K8s 集群。今天&#xff0c;我将为大家实战演示如何在 openEuler 22.03 LT…

使用DBeaver的第2天-使用sql导入数据

使用sql导入数据这块我会仔细的说一下 首先位置一定要放在库上&#xff08;实例&#xff09;&#xff0c;放在表上可不好使用哦 然后点击工具-再点击执行脚本 这样就执行成功了 但是如果你执行失败了&#xff0c;多半可能是因为本地没有部署mysql&#xff0c;记住只有本地有…

【IOS】swift新手踩坑总汇

这里写自定义目录标题 ESTabBarController_swiftQMUIKit ESTabBarController_swift Exception NSException * "调用了 pushViewController 但实际上没 push 成功&#xff0c;viewController&#xff1a;<HuangShan.ViewControllers: 0x106832a00>; superclass: EST…

【强训笔记】day23

NO.1 思路&#xff1a;直接计算结果&#xff0c;先计算怪物可以抗几次攻击&#xff0c;再计算勇士受到的伤害&#xff0c;如果勇士的攻击力大于等于怪物的血量&#xff0c;那么就可以击杀无数只&#xff0c;如果勇士的血量正好是受到攻击的整数倍&#xff0c;那么击杀的怪物数…

前端项目的准备工作

1.下载less或sass&#xff08;如果使用的话&#xff09; pnpm i -D less | pnpm i -D sass &#xff08;-D: 这是一个选项或标志&#xff0c;表示安装的软件包将被添加为开发依赖项&#xff08;devDependencies&#xff09;。开发依赖项是指在开发过程中需要使用的工具…

【信息系统项目管理师知识点速记】风险管理:实施风险应对

实施风险应对是确保项目风险管理计划得以执行的关键步骤,旨在通过监控和执行预先设定的策略来减轻威胁、抓住机遇,以及维持项目目标的一致性。此过程概括如下: 目标: 确保风险应对计划的执行。最小化单个风险的负面影响。最大化利用单个风险带来的机会。持续管理项目范围内…