当前位置: 首页 > article >正文

SpringBoot+Tess4j:轻松实现OCR功能

一、引言二、功能演示三、功能实现1. 描述2. 编码实现四、源码五、结束语一、引言你是否曾遇到过这样的情况看到一段有用的文本想要快速复制下来却只能眼巴巴地盯着屏幕手动输入其实Java 也可以轻松实现 OCR光学字符识别功能让你轻松识别并提取图片中的文字信息。不需要庞大的外部工具也不必担心复杂的配置只需几行代码Java 就能帮你搞定 OCR接下来我们将带你一步步揭开这项技术的神秘面纱让你的 Java 项目更加智能、便捷。二、功能演示先让我们看看最终效果再进行实现三、功能实现1. 描述在这部分我们将使用 SpringBoot 和 Tess4j 来实现 OCR 功能。Tess4j 是一个基于 Tesseract 的 Java 封装库它让我们能够轻松地在 Java 应用中使用 OCR 技术。无论你是在处理扫描的文档、识别图片中的文字还是自动化读取截图内容Tess4j 都能派上用场。通过与 SpringBoot 结合我们可以快速搭建一个轻量级的 RESTful 服务轻松应对各种 OCR 需求。2. 编码实现2.1 引入依赖dependency groupIdnet.sourceforge.tess4j/groupId artifactIdtess4j/artifactId /dependency2.2 初始化Tesseract引擎项目部署:使用new ClassPathResource(tess_data).getFile().getAbsolutePath()可能在项目打成 Jar 包后无法正常访问。为了解决这个问题可以参考一些开源项目中的TensorflowUtil工具类将resource文件进行转存后再加载。在 Linux 环境中还需要解决 无法初始化net.sourceforge.tess4j.TessAPI的问题确保所有必要的依赖库和系统配置正确。训练数据:不同的训练数据和配置会影响识别结果的精度和速度。可以根据实际需求自行训练适合的数据集。免费的训练数据包括:tessdata_best: 主要针对高精度要求的应用场景虽然识别速度较慢但结果更准确。tessdata: 是标准的训练数据集平衡了识别速度和精度适合一般的 OCR 应用。tessdata_fast: 适用于需要快速识别的场景虽然精度略低但可以显著提升识别速度。/** * TesseractOcr 模型加载 * * author : YiFei */ Slf4j Getter Component publicclass TesseractOcrModelService { privatefinal Tesseract tesseract new Tesseract(); public TesseractOcrModelService() { try { // 获取训练模型文件夹 该方法在打包为jar后会有问题建议使用项目中TensorflowUtil工具类 String folderPath new ClassPathResource(tess_data).getFile().getAbsolutePath(); /* * OEM_TESSERACT_ONLY 0表示仅运行Tesseract OCR引擎不使用LSTMLong Short-Term Memory线识别器。Tesseract是一种传统的OCR引擎适用于一般的文字识别任务。 * OEM_LSTM_ONLY 1表示仅运行LSTM线识别器不使用Tesseract。LSTM是一种深度学习模型通常在处理复杂文本或手写文字识别等任务时表现较好。 * OEM_TESSERACT_LSTM_COMBINED 2表示同时运行Tesseract和LSTM识别器并在遇到困难情况时允许回退到Tesseract。这种组合模式可以在不同情况下灵活地选择最适合的识别引擎。 * OEM_DEFAULT 3当调用 init_*() 方法时指定此模式表示可以根据语言特定配置、命令行配置等自动推断使用哪种模式。如果没有明确指定则默认使用 OEM_TESSERACT_ONLY 模式。 */ tesseract.setPageSegMode(OEM_TESSERACT_LSTM_COMBINED); // 设置Tesseract OCR引擎的训练数据文件夹路径 /* * chi_sim.traineddata: Chinese Simplified中文简体 * chi_sim_vert.traineddata: Chinese Simplified Vertical中文简体竖排 * chi_tra.traineddata: Chinese Traditional中文繁体 * chi_tra_vert.traineddata: Chinese Traditional Vertical中文繁体竖排 */ tesseract.setDatapath(folderPath); tesseract.setPageSegMode(6); // 设置为中文简体 tesseract.setLanguage(chi_sim); } catch (Exception e) { thrownew RuntimeException(e); } } }2.3 编写 RESTful 接口/** * Ocr-控制器 * * author : YiFei */ RestController RequestMapping(ocr) RequiredArgsConstructor publicclass OcrController { privatefinal TesseractOcrModelService tesseractOcrModelService; PostMapping(/detection) public ResultString ocrDetection(MultipartFile file) { try { /* 图片调整推荐 : 二值化将图像转换为黑白有助于提高对比度。 去噪去除图像中的噪声。 旋转矫正确保图像中的文本是水平的。 */ Tesseract tesseract tesseractOcrModelService.getTesseract(); return Result.success(tesseract.doOCR(ImageIO.read(file.getInputStream()))); } catch (Exception e) { thrownew RuntimeException(ImageIO.read(file.getInputStream())) 解析错误); } } }四、源码https://gitee.com/fateyifei/yf注意事项 :平台一人一号账号可以通过邮箱、第三方平台自动注册。用户名密码方式登录请联系管理员手动添加、手机号不可用。敏感数据以做信息脱敏在线聊天功能消息已做脏词过滤群发、系统、AI消息不会被平台记录五、结束语Tess4j 在识别身份证号、手机号和英文单词方面表现不错但在使用免费训练数据时识别中文的效果相对较差。如果您对识别质量有更高的要求可以考虑以下几种方案专项训练通过自定义数据集进行专项训练提升对特定文本类型或语言的识别精度。调用第三方 API利用专业的 OCR 服务提供商如Google Cloud Vision、Microsoft Azure OCR或Amazon Textract这些平台通常能提供更高的识别准确性和更多的功能。此外Tess4j 也可以应用于其他场景文档数字化将纸质文档转换为可编辑的电子文本。自动数据录入自动从扫描的表格、账单等文件中提取数据。车牌识别从交通摄像头捕捉的图像中自动识别车牌号码。手写识别将手写内容转换为数字文本。尽管这些方法可能需要额外的成本和设置但它们能显著提升识别效果帮助您满足更高的需求。

相关文章:

SpringBoot+Tess4j:轻松实现OCR功能

一、引言二、功能演示三、功能实现1. 描述2. 编码实现四、源码五、结束语一、引言你是否曾遇到过这样的情况:看到一段有用的文本,想要快速复制下来,却只能眼巴巴地盯着屏幕,手动输入?其实,Java 也可以轻松实…...

手把手教你学Simulink——基于Simulink的无差拍控制三相整流器高精度电流跟踪

目录 手把手教你学Simulink ——基于Simulink的无差拍控制三相整流器高精度电流跟踪 一、问题背景 二、系统建模与控制原理 1. 三相整流器拓扑 2. dq 轴数学模型(同步旋转坐标系) 3. 无差拍控制律推导 三、整体控制架构 四、Simulink 建模步骤 第一步:搭建三相整流…...

FreeRtos——24、STM32中断处理体系及软件定时器按键消抖

第一节:STM32中断处理体系结构1.中断处理路径:2.NVIC中断控制器的中断优先级:2.1 中断号:在NVIC中对于硬件产生的任何一个中断都分配了一个中断号,中断号是一个唯一的标识符,用于识别每个外设设备的中断。NVIC使用中断号来配置中断…...

手把手教你学Simulink——基于Simulink的模型预测控制(MPC)PFC整流器快速动态响应

目录 手把手教你学Simulink ——基于Simulink的模型预测控制(MPC)PFC整流器快速动态响应 一、问题背景 二、系统建模与控制目标 1. 单相 Boost PFC 拓扑 2. 动态方程(αβ 静止坐标系) 3. 控制目标 三、有限控制集 MPC(FCS-MPC)设计 1. 预测模型(离散化) 2. 代…...

ViT图像分类-中文-日常物品完整指南:4090D单卡环境配置与中文类别映射说明

ViT图像分类-中文-日常物品完整指南:4090D单卡环境配置与中文类别映射说明 想试试用AI模型来识别你手机里的照片吗?比如,拍一张桌上的水杯、键盘或者零食,让模型告诉你它是什么。今天要介绍的这个工具,就能帮你轻松实…...

微信小程序语音交互实战:长按录制与点击播放的完整实现方案

1. 微信小程序语音交互功能概述 语音交互已经成为现代移动应用不可或缺的功能之一。在微信小程序中实现语音录制与播放,能够极大提升用户体验,特别适合社交、教育、工具类小程序。我最近在一个社交类小程序项目中实现了完整的语音交互模块,踩…...

用STM32F103C8T6和F9P模组DIY一台RTK无人车:从蓝牙遥控到自主导航的保姆级教程

用STM32F103C8T6和F9P模组打造高精度RTK无人车:从零构建到自主导航全流程解析 在创客圈子里,能够自主导航的智能小车一直是热门项目。但传统基于普通GPS的方案定位精度往往在米级徘徊,难以实现真正的精准控制。而将RTK(实时动态定…...

终极Cursor Pro解锁指南:免费体验AI编程助手的完整解决方案

终极Cursor Pro解锁指南:免费体验AI编程助手的完整解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached you…...

小白友好!Stable Diffusion v1.5单卡运行多个服务,详细步骤+避坑指南

小白友好!Stable Diffusion v1.5单卡运行多个服务,详细步骤避坑指南 1. 为什么需要单卡多服务? 很多刚接触Stable Diffusion的朋友都会遇到这样的困扰:团队里几个人共用一台服务器,但GPU卡只有一张。一个人用的时候还…...

ai辅助硬件设计:让快马智能解析并生成db9接口与mcu连接的完整原理图与代码

在硬件开发中,DB9接口的设计与连接是个常见但容易出错的环节。最近我在一个嵌入式项目里需要实现STM32与DB9接口的RS-232通信,发现传统设计流程存在几个痛点: 引脚定义容易混淆 DB9公头和母头的引脚定义是相反的,比如母头的2号引脚…...

VoxCPM-1.5-WEBUI问题解决:部署常见错误与一键启动脚本详解

VoxCPM-1.5-WEBUI问题解决:部署常见错误与一键启动脚本详解 1. 快速入门指南 1.1 镜像部署准备 在开始使用VoxCPM-1.5-WEBUI之前,您需要确保具备以下条件: 支持CUDA的NVIDIA显卡(建议RTX 3060及以上)至少16GB系统内…...

深入解析cufftPlanMany:从参数配置到高效FFT实现

1. 为什么需要cufftPlanMany? 第一次接触CUDA FFT时,很多人都是从cufftPlan1d、cufftPlan2d这些基础接口开始的。但当你真正处理实际工程问题时,会发现这些简单接口远远不够用。比如要处理批量信号、非连续内存数据、子区域FFT计算等场景时&a…...

告别手动处理:用快马AI一键生成你的专属批量链接效率工具

最近在整理项目文档时,经常需要处理大量杂乱无章的链接。手动一个个检查、格式化这些链接不仅耗时耗力,还容易出错。于是我开始寻找更高效的解决方案,最终在InsCode(快马)平台上快速实现了一个批量链接处理工具,整个过程比想象中简…...

QMCDecode:让音乐自由播放的开源格式转换工具

QMCDecode:让音乐自由播放的开源格式转换工具 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果存…...

Gemma-3-270m内网穿透部署方案

Gemma-3-270m内网穿透部署方案:安全打通企业AI服务 想象一下这个场景:你们公司的研发团队刚刚在内部服务器上部署了轻量高效的Gemma-3-270m模型,准备用它来优化客服工单分类、自动生成产品文档。模型跑起来了,效果也不错&#xf…...

4个维度解析Lenovo Legion Toolkit:游戏本性能管理的轻量革命

4个维度解析Lenovo Legion Toolkit:游戏本性能管理的轻量革命 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 1.…...

LFM2.5-1.2B-Thinking-GGUF算法解析应用:图解经典算法与复杂度分析

LFM2.5-1.2B-Thinking-GGUF算法解析应用:图解经典算法与复杂度分析 1. 算法可视化教学新范式 算法学习一直是计算机科学教育中的难点。传统的教科书讲解方式往往让初学者感到抽象难懂,而LFM2.5-1.2B-Thinking-GGUF模型为算法教学带来了全新的可视化解决…...

如何用开源工具实现3D打印钥匙自由?从参数测量到模型生成的实践路径

如何用开源工具实现3D打印钥匙自由?从参数测量到模型生成的实践路径 【免费下载链接】keygen OpenSCAD tools for generating physical keys 项目地址: https://gitcode.com/gh_mirrors/ke/keygen 在数字化制造蓬勃发展的今天,3D打印技术正逐步走…...

龙虾agent-browser获得chromium包问题

小龙虾非常火爆,在装agent-browser的时候,普通人往往被chromium的安装堵死了。网上的跨域安装方法一大堆,包括用镜像站点,国内所有的镜像站点都不行。但是真正能走通的,我到最后也没有试出来。最后只能自己想出一种手动…...

Obsidian图像转换:提升笔记效率的格式优化解决方案

Obsidian图像转换:提升笔记效率的格式优化解决方案 【免费下载链接】obsidian-image-converter ⚡️ Convert, compress, resize, annotate, markup, draw, crop, rotate, flip, align images directly in Obsidian. Drag-resize, rename with variables, batch pro…...

Realistic Vision V5.1效果展示:这些惊艳的人像作品都是AI生成的

Realistic Vision V5.1效果展示:这些惊艳的人像作品都是AI生成的 1. 当AI画师遇上专业摄影师 你有没有见过这样的AI生成人像?皮肤纹理清晰到能看见毛细血管,发丝在阳光下呈现自然的半透明质感,眼神光的位置精准符合物理反射规律…...

Path of Building PoE2:零基础掌握流放之路2角色规划工具实战指南

Path of Building PoE2:零基础掌握流放之路2角色规划工具实战指南 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 你是否曾遇到这样的困境:花费数小时规划的角色build&#xff0c…...

一站式屏幕神器eSearch:如何5分钟打造你的智能工作流?

一站式屏幕神器eSearch:如何5分钟打造你的智能工作流? 【免费下载链接】eSearch 截屏 离线OCR 搜索翻译 以图搜图 贴图 录屏 万向滚动截屏 屏幕翻译 Screenshot Offline OCR Search Translate Search for picture Paste the picture on the screen Scree…...

【大英赛】2009-2026年大英赛ABCD类历年真题、样卷、听力音频及答案PDF电子版

2026年大英赛将于4月12日9:00—11:00举行,开始倒计时啦!小编整理了最新的2009-2026年大学生英语竞赛(大英赛NECCS)ABCD类历年真题、样卷、听力音频及答案解析,PDF电子版,可下载打印! 资料下载&a…...

不止于超市:用QGIS缓冲区+叠置分析,为你的奶茶店、自习室找个好位置

从奶茶店到自习室:QGIS空间分析赋能小微商业选址决策 走在街头,你是否好奇为什么某些奶茶店总是门庭若市,而几步之隔的同类店铺却冷冷清清?商业选址从来不是简单的"地段好"三个字能概括的。对于资金有限的小微创业者来说…...

鸿蒙应用开发实战:手把手教你封装一个可复用的音乐播放器管理类(ArkTS版)

鸿蒙应用开发实战:构建高可复用的音乐播放器管理类(ArkTS版) 在鸿蒙应用开发中,音频播放功能是许多应用的核心需求。本文将深入探讨如何设计一个健壮、可复用的音乐播放器管理类,采用ArkTS语言实现,帮助开发…...

讲透RenderTarget · 第一章:RenderTarget 是什么

**欢迎新朋友点赞、关注、收藏三连。第一章:RenderTarget 是什么一句话概括: RenderTarget 就是 GPU 的"画布"——不一定画在屏幕上,可以画在任何一块显存里。⏱ 30 秒概览RenderTarget(RT) GPU 可以写入像素…...

Windows自定义部署神器:从零开始的安装介质制作指南

Windows自定义部署神器:从零开始的安装介质制作指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat 你是否…...

从idea ai插件到在线原型:用快马平台快速构建你的智能代码生成器

最近在开发中频繁使用IDEA的AI插件辅助编码,发现这类工具能大幅减少重复劳动。但插件功能往往局限于当前IDE环境,于是萌生了一个想法:能否把这种智能生成能力搬到线上,做成一个轻量级的Web工具?经过在InsCode(快马)平台…...

比特币钱包密码与助记词恢复实战指南:6大核心模块掌握btcrecover全功能

比特币钱包密码与助记词恢复实战指南:6大核心模块掌握btcrecover全功能 【免费下载链接】btcrecover An open source Bitcoin wallet password and seed recovery tool designed for the case where you already know most of your password/seed, but need assista…...