news 2026/6/15 21:17:25

SpringBoot集成Tess4j :低成本解锁OCR 图片识别能力

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot集成Tess4j :低成本解锁OCR 图片识别能力

一、引言

你是否曾遇到过这样的情况:看到一段有用的文本,想要快速复制下来,却只能眼巴巴地盯着屏幕,手动输入?

其实,Java 也可以轻松实现 OCR(光学字符识别)功能,让你轻松识别并提取图片中的文字信息。不需要庞大的外部工具,也不必担心复杂的配置,只需几行代码,Java 就能帮你搞定 OCR!

接下来,我们将带你一步步揭开这项技术的神秘面纱,让你的 Java 项目更加智能、便捷。

二、功能演示

先让我们看看最终效果,再进行实现

三、功能实现

1. 描述

在这部分,我们将使用 SpringBoot 和 Tess4j 来实现 OCR 功能。Tess4j 是一个基于 Tesseract 的 Java 封装库,它让我们能够轻松地在 Java 应用中使用 OCR 技术。

无论你是在处理扫描的文档、识别图片中的文字,还是自动化读取截图内容,Tess4j 都能派上用场。通过与 SpringBoot 结合,我们可以快速搭建一个轻量级的 RESTful 服务,轻松应对各种 OCR 需求。

2. 编码实现
2.1 引入依赖
<dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> </dependency>
2.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引擎,不使用LSTM(Long 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 Result<String> 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 VisionMicrosoft Azure OCRAmazon Textract,这些平台通常能提供更高的识别准确性和更多的功能。

此外,Tess4j 也可以应用于其他场景:

  • 文档数字化:将纸质文档转换为可编辑的电子文本。

  • 自动数据录入:自动从扫描的表格、账单等文件中提取数据。

  • 车牌识别:从交通摄像头捕捉的图像中自动识别车牌号码。

  • 手写识别:将手写内容转换为数字文本。

尽管这些方法可能需要额外的成本和设置,但它们能显著提升识别效果,帮助您满足更高的需求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:19:29

amfe-flexible + postcss-pxtorem 深度解析:原理、配置与工程化实践

amfe-flexible postcss-pxtorem 是 H5 移动端 REM 适配的工业级方案&#xff0c;核心是动态根字体大小 自动 px 转 rem&#xff0c;实现「一套设计稿适配所有移动端设备」的目标。以下从原理、配置、进阶用法、排错四个维度详细展开。 一、方案核心原理 1. amfe-flexible&am…

作者头像 李华
网站建设 2026/6/15 14:25:02

2025年最佳AI论文助手评选:六家主流平台的核心功能差异与用户评价

2025AI写论文模型排名&#xff1a;6大平台最新对比推荐 核心工具对比速览 工具名称 主要功能 处理时间 适配检测系统 特色优势 aibiye 降AIGC率查重 20分钟 知网/格子达/维普 精准调整表达风格&#xff0c;保留学术严谨性 aicheck AI检测降重 15分钟 主流检测平台…

作者头像 李华
网站建设 2026/6/15 14:34:45

语音合成也能做个性化定制?试试这款支持发音控制的开源工具

语音合成也能做个性化定制&#xff1f;试试这款支持发音控制的开源工具 在虚拟主播24小时直播、有声书自动朗读、智能客服全天候应答的今天&#xff0c;我们对“AI说话”的要求早已不是“能出声”那么简单。用户开始在意&#xff1a;这声音像不像真人&#xff1f;有没有情绪起伏…

作者头像 李华
网站建设 2026/6/15 14:43:09

如何用PHP高效解析图像识别结果?:3种高可用方案对比实测

第一章&#xff1a;PHP图像识别结果解析的技术背景与挑战在现代Web应用中&#xff0c;图像识别技术被广泛应用于内容审核、智能搜索和自动化处理等场景。PHP作为服务端常用语言之一&#xff0c;虽然并非直接执行深度学习模型的首选&#xff0c;但常承担接收识别结果、解析响应数…

作者头像 李华
网站建设 2026/6/15 15:01:53

GLM-TTS支持多音字发音控制:音素级调节让朗读更自然

GLM-TTS支持多音字发音控制&#xff1a;音素级调节让朗读更自然 在中文语音合成的应用现场&#xff0c;一个看似不起眼的“重”字&#xff0c;可能就让整个项目陷入尴尬——是“zhng量”还是“chng新开始”&#xff1f;传统TTS系统常因上下文理解不足而误读多音字&#xff0c;导…

作者头像 李华
网站建设 2026/6/15 14:56:09

清华系AI语音模型GLM-TTS深度评测:支持网盘直链下载与批量推理

清华系AI语音模型GLM-TTS深度评测&#xff1a;支持网盘直链下载与批量推理 在短视频、播客和数字人内容爆发的今天&#xff0c;个性化语音合成早已不再是“锦上添花”&#xff0c;而是决定用户体验的关键一环。传统TTS系统要么音色千篇一律&#xff0c;要么需要数小时训练才能克…

作者头像 李华