当前位置: 首页> 游戏> 评测 > 二维码转换成短链接在线_网站设计的特点_seo研究中心论坛_seo综合查询软件排名

二维码转换成短链接在线_网站设计的特点_seo研究中心论坛_seo综合查询软件排名

时间:2025/7/13 2:30:10来源:https://blog.csdn.net/u014799292/article/details/145605250 浏览次数:0次
二维码转换成短链接在线_网站设计的特点_seo研究中心论坛_seo综合查询软件排名

目录

前言

环境安装

Windows安装

Linux安装

1、安装包准备

2、设置编译环境

升级 GCC 到 12.2.0

a、查看和安装gcc-12.2.0需要的依赖

b、安装gmp、mpfr、mpc、isl

c、安装

3、安装依赖库

4、安装Leptonica库(root)

5、安装Tesseract-OCR(root)

SpringBoot 集成部署

1、项目引入依赖和实现

1)、pom依赖

2)、业务类实现

2、Windows验证

3、Linux部署验证

参考文献 


前言

Java 中实现 OCR(光学字符识别)功能,可以使用 Tesseract OCR,这是一个开源的 OCR 引擎,支持多种语言,并且可以在 Java 中通过 Tesseract API 进行集成。

官网GitHub : Releases · tesseract-ocr/tesseract · GitHub

环境安装

Windows安装

Windows版本本地安装过程中,记得勾选中文语言包

一路next 后,安装成功,进入安装目录, 输入命令
tesseract --list-langs
查看支持的语言

其他语言参考:tesseract语言库

Linux安装

Tesseract必须使用Leptonica库来打开输入图像,所以需要下载,安装,使用内置支持zlib、png和tiff(用于多页tiff)的leptonica。

1、安装包准备

Tesseract OCR 和 Leptonica 是两个紧密相关的开源项目。Tesseract 依赖于 Leptonica 进行图像处理,因此它们的版本需要兼容。以下是 Tesseract 和 Leptonica 的版本对应关系,以及如何选择合适的版本:

对应版本内容可以查看 Tesseract官方GitHub 查看,
这里使用 Tesseract 5.5.0Leptonica 1.83.1 版本

进入服务器,创建software文件夹

# mkdir /usr/local/software

# cd /usr/local/software

到官网地址

Tesseract官方GitHub

Leptonica官方GitHub

下载后上传依赖包,有梯子的可以直接使用 wget 命令下载

# wget https://github.com/tesseract-ocr/tesseract/archive/refs/tags/5.5.0.tar.gz

# wget https://github.com/DanBloomberg/leptonica/releases/download/1.83.1/leptonica-1.83.1.tar.gz

解压压缩包

# tar -zxvf tesseract-5.5.0.tar.gz

# tar -zxvf leptonica-1.83.1.tar.gz

2、设置编译环境

首先,确保您的Linux系统已经安装了必要的编译工具:

# yum install gcc gcc-c++ make

执行命令时报错:

解决方式可参考:“Could not resolve host: mirrorlist.centos.org; 未知的错误”

解决后,需要把 CentOS-Base.repo 设置个别名,不然依旧会优先引用

# mv CentOS-Base.repo CentOS-Base.repo.backup

# ll 

处理后,再重新执行命令

# yum install gcc gcc-c++ make

升级 GCC 到 12.2.0

因为Tesseract对gcc有版本要求

查看当前版本

# gcc --version

Tesseract 5.5.0 使用 GCC 4.8.5 版本验证过了,失败!需要升级更高版本。
centos 7默认安装的版本为 gcc 4.8.5,本环境将升级至 12.2.0 (当前查询到最新版本是14.2.0 ,但安装过程中一直有各类错误,查阅现有能找到的资料,仅升级到12.2.0)

下载地址:GCC版本包

下载包后上传到服务器,并解压

# cd /usr/local/software

# tar -zxvf gcc-12.2.0.tar.gz

查看和安装 gcc-12.2.0 需要的依赖
 

a、查看和安装gcc-12.2.0需要的依赖

查看 gcc-12.2.0 所需依赖库
不同版本的gcc所需依赖库不同,可在源码文件 contrib/download_prerequisites 中查看。

# cd gcc-12.2.0

# vim contrib/download_prerequisites

(下图仅对比 14.2.0 依赖差异,可跳过)下面这个图是给出 gcc-14.2.0 的安装包做对比,多出了gettext 依赖包,但下载的包有各类缺失导致不成功,有兴趣的可以自行研究下。

所需依赖各下载包版本地址:

gmp 版本包
mpfr 版本包
mpc 版本包
isl 版本包
gettext 版本包

b、安装gmp、mpfr、mpc、isl

将gmp、mpfr、mpc、isl 压缩包放置解压后的 gcc-12.2.0 目录。

在源码目录下运行 ./contrib/download_prerequisites 文件,脚本会解压gmp、mpfr、mpc、isl 的压缩包并创建文件夹软链接。

# ./contrib/download_prerequisites

查看软连接  # ll

创建一个build目录作为构建目录,进入目录进行编译

# mkdir build && cd build

# ../configure --enable-checking=release --enable-languages=c,c++ -disable-multilib

c、安装

# make

好久。。。好久。。。

# make install

重启下服务器,在进行版本检查

# g++ -v && gcc -v

升级成功

3、安装依赖库

接下来,安装Tesseract和Leptonica所需的其他依赖库:

# yum install autoconf automake libtool -y

# yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel -y

4、安装Leptonica库(root)

Leptonica是Tesseract的一个依赖库。以下是安装步骤:

进入解压好的Leptonica目录进行编译安装

# cd /usr/local/software/leptonica-1.83.1/

# ./autogen.sh

./configure

#  make && make install

 

执行成功, 添加 leptonica环境变量,修改profile

# vim /etc/profile

# 添加信息 i 
export LD_LIBRARY_PATH=/usr/local/lib
export LIBLEPT_HEADERSDIR=/usr/local/include
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

保存,刷新配置

# source /etc/profile

5、安装Tesseract-OCR(root)

进入目录,依次执行以下命令,进行程序编译,安装

# cd /usr/local/software/tesseract-5.5.0/

# ./autogen.shll   #会生成 configure文件

# ./configure

# make && make install

添加到环境变量

# vim /etc/profile

PATH=$PATH:/usr/local/tesseract/bin
export PATH
export TESSDATA_PREFIX=/usr/local/share/tessdata
export PATH=$PATH:$TESSDATA_PREFIX

保存,刷新配置

# source /etc/profile

查看tesseract版本

tesseract –version

此时就可以看到 tesseract 的依赖包有哪些
把so动态链接库复制 lib64 库中

# cp /usr/local/lib/*.so.* /usr/lib64/

查看可执行文件路径:

# which tesseract

当前语言包的路径(如果你下载了语言包,丢到这里):

# cd /usr/local/share/tessdata

tesseract语言库
语言包下载地址

这里下载常用的简体中文和英文即可

上传后,检测支持语言

# tesseract --list-langs

上传一张图片 到 test 目录 ,验证下

识别名为bingli.jpg的图片中的文字,并将结果保存到output.txt文件中

# cd /usr/local/software/tesseract-5.5.0/test/

# tesseract bingli.jpg output -l chi_sim

查看识别内容

# cat output.txt

SpringBoot 集成部署

1、项目引入依赖和实现

1)、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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>tesseract-ocr</artifactId><version>1.0</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.8.RELEASE</version></parent><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>5.8.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><skip>true</skip><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build></project>

2)、业务类实现

OCRService实现类

package com.tesseract.ocr.service;import com.tesseract.ocr.example.OCRExample;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;@Service
public class OCRService {public static Logger logger = LoggerFactory.getLogger(OCRExample.class);/*** 全文识别** @param file* @throws TesseractException*/public void testAllText(MultipartFile file) throws TesseractException, IOException {// 创建 Tesseract OCR 实例Tesseract tess = getBaseTesseract();File imageFile = convertMultipartFileToFile(file);String result = tess.doOCR(imageFile);// 输出 OCR 识别结果System.out.println("======================================");System.out.println("OCR 识别结果:");System.out.println(result);}/*** 指定多个区域识别** @param file* @throws TesseractException*/public void testAssignArea(MultipartFile file) throws TesseractException, IOException {// 创建 Tesseract OCR 实例Tesseract tess = getBaseTesseract();File imageFile = convertMultipartFileToFile(file);// 获取图片的 OCR 结果List<Rectangle> regions = new ArrayList<>();// 病历regions.add(new Rectangle(380, 750, 400, 150));regions.add(new Rectangle(2215, 895, 505, 120));regions.add(new Rectangle(190, 1300, 1200, 600));// 执行 OCR 操作for (int i = 0; i < regions.size(); i++) {Rectangle regionTemp = regions.get(i);String resultTemp = tess.doOCR(imageFile, regionTemp);  // 对单个区域进行 OCRSystem.out.println("======================================");System.out.println("区域 " + (i + 1) + " 的识别结果:");System.out.println(resultTemp);System.out.println("-----------------------------");}}/*** 转化为File** @param multipartFile* @return* @throws IOException*/public static File convertMultipartFileToFile(MultipartFile multipartFile) throws IOException {// 获取上传文件的原始文件名String originalFilename = multipartFile.getOriginalFilename();// 提取文件后缀名String fileExtension = "";if (originalFilename != null && originalFilename.contains(".")) {fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));}// 创建一个临时文件File file = File.createTempFile("temp", fileExtension);// 将 MultipartFile 转换为 FilemultipartFile.transferTo(file);// 设置 JVM 退出时删除临时文件file.deleteOnExit();// 返回 File 对象return file;}/*** 获取基础Tesseract配置** @return Tesseract*/private Tesseract getBaseTesseract() {// 创建 Tesseract OCR 实例Tesseract tess = new Tesseract();// 设置 Tesseract 的路径(指向你安装 Tesseract 的路径)// 你需要将此路径指向 Tesseract 安装文件夹下的 tessdata 目录// windowstess.setDatapath("F:\\tesseract-ocr\\software\\tessdata");// linux// tess.setDatapath("/usr/local/share/tessdata");// 设置 OCR 识别的语言,如果是英文,可以使用 "eng",中文,可以使用 "chi_sim", eng+chi_sim同时使用英文和中文tess.setLanguage("chi_sim+eng");    // chi_sim+eng同时使用英文和中文,放在前面的语言为主要识别语言return tess;}
}

OCRController控制层

package com.tesseract.ocr.controller;import com.tesseract.ocr.service.OCRService;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;@RestController
@RequestMapping("/ocr")
@Validated
public class OCRController {@Autowiredprivate OCRService ocrService;/*** 全区域识别** @param file* @throws IOException* @throws TesseractException*/@PostMapping("/testAll")public void testAll(@RequestParam("image") MultipartFile file) throws IOException, TesseractException {ocrService.testAllText(file);}/*** 指定区域识别** @param file* @throws IOException* @throws TesseractException*/@PostMapping("/testArea")public void testArea(@RequestParam("image") MultipartFile file) throws IOException, TesseractException {ocrService.testAssignArea(file);}}

2、Windows验证

使用postman 验证,控制台打印

全区域识别 接口调用控制台打印结果

指定多个区域 接口调用控制台打印结果

3、Linux部署验证

打成JAR推送Linux Centos7 服务器

优先确保服务器搭建了JAVA环境,没有可参考:linux-Centos-7-64位:1、 安装JAVA环境

进入服务器放测试图片的 test 目录,将jar上传到该测试目录下

# cd /usr/local/software/tesseract-5.5.0/test

启动 Jar

# java  -jar tesseract-ocr-1.0.jar

使用命令调用接口

# curl -X POST -F "image=@bingli.jpg" http://localhost:8818/api/v1/ocr/test

查看控制台打印结果

部署验证完成,对于识别的准确性,需要后续自行训练验证。

PS:不是最新的版本就是最好的,要注意所需版本依赖搭配,一开始都用最新的没少踩坑!

参考文献 

Linux 安装 Tesseract 4.1.0

Linux安装tesseract 5.2.0教程

linux离线升级gcc版本---gcc4.8.5-->gcc12.2.0

centors7升级GLIBC2.18

关键字:二维码转换成短链接在线_网站设计的特点_seo研究中心论坛_seo综合查询软件排名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: