黔东南数字档案馆系统搭建与OCR实操指南

一、开发环境初始化

在构建黔东南苗族侗族自治州数字档案馆系统的核心模块前,必须先配置好标准化的开发环境。以下版本组合经过稳定性测试,可直接使用。

  • JDK 17:推荐使用Eclipse Temurin 17,下载后配置JAVA_HOME环境变量。
  • Maven 3.8+:确保settings.xml中配置了阿里云镜像源,以加速依赖下载。
  • MySQL 8.0:数据库字符集必须设置为utf8mb4,以支持少数民族语言和特殊字符。
  • Node.js 16+:前端构建环境,安装后验证npm版本。
  • Tesseract OCR:本系统核心依赖,用于档案数字化识别。Windows用户下载安装包,Linux用户执行sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim

打开终端,输入java -versionnode -v,确保环境变量生效。

二、数据库设计与初始化

数字档案馆的核心在于对档案元数据和全文数据的存储。请在MySQL客户端执行以下SQL脚本,创建专属数据库表。

执行命令:CREATE DATABASE qiandongnan_archive DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

接着执行建表语句,该表包含了档案标题、存储路径以及OCR识别后的全文内容:

```sql USE qiandongnan_archive; CREATE TABLE `digital_archive` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `archive_title` varchar(255) NOT NULL COMMENT '档案标题', `file_path` varchar(500) NOT NULL COMMENT '文件存储物理路径', `ocr_content` text COMMENT 'OCR识别后的全文内容', `category` varchar(50) DEFAULT NULL COMMENT '档案分类(如:文书、科技、会计)', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '归档时间', PRIMARY KEY (`id`), KEY `idx_category` (`category`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='黔东南数字档案馆-档案主表'; ```

三、后端核心服务构建

后端采用Spring Boot 3.x + MyBatis-Plus架构,重点实现文件上传与Tesseract OCR识别的集成。

1. 项目依赖配置

创建Maven项目,在pom.xml中引入以下关键依赖。注意引入tess4j用于调用OCR引擎。

```xml org.springframework.boot spring-boot-starter-web com.mysql mysql-connector-j runtime com.baomidou mybatis-plus-boot-starter 3.5.3.1 net.sourceforge.tess4j tess4j 5.2.1 org.projectlombok lombok true ```

2. 数据源与OCR配置

src/main/resources/application.yml中配置数据库连接信息及Tesseract的数据文件路径。注意:tess.data.path必须指向你安装Tesseract时的tessdata文件夹目录。

```yaml server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/qiandongnan_archive?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: your_password 文件上传配置 file: upload-dir: D:/archive_data/uploads OCR配置 tesseract: data-path: D:/Tesseract-OCR/tessdata language: chi_sim+eng ```

3. 实体类与持久层

创建DigitalArchive实体类,对应数据库表结构。

```java package com.qiandongnan.archive.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import java.time.LocalDateTime; @Data public class DigitalArchive { @TableId(type = IdType.AUTO) private Long id; private String archiveTitle; private String filePath; private String ocrContent; private String category; private LocalDateTime createTime; } ```

黔东南数字档案馆系统搭建与OCR实操指南

创建Mapper接口:

```java package com.qiandongnan.archive.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qiandongnan.archive.entity.DigitalArchive; import org.apache.ibatis.annotations.Mapper; @Mapper public interface DigitalArchiveMapper extends BaseMapper { } ```

4. OCR识别业务实现

这是系统的核心,负责将上传的图片转换为可检索的文本。创建OcrService

```java package com.qiandongnan.archive.service; import net.sourceforge.tess4j.ITesseract; import net.sourceforge.tess4j.Tesseract; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; @Service public class OcrService { @Value("${tesseract.data-path}") private String tessDataPath; @Value("${tesseract.language}") private String language; public String extractText(File imageFile) throws Exception { ITesseract instance = new Tesseract(); // 设置训练数据目录 instance.setDatapath(tessDataPath); // 设置识别语言:简体中文+英文 instance.setLanguage(language); // 执行OCR识别 return instance.doOCR(imageFile); } } ```

5. 控制器层接口

提供文件上传接口,接收前端文件,保存到本地,调用OCR识别,并将结果入库。

```java package com.qiandongnan.archive.controller; import com.qiandongnan.archive.entity.DigitalArchive; import com.qiandongnan.archive.mapper.DigitalArchiveMapper; import com.qiandongnan.archive.service.OcrService; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; import java.util.UUID; @RestController @RequestMapping("/api/archive") public class ArchiveController { @Value("${file.upload-dir}") private String uploadDir; private final DigitalArchiveMapper mapper; private final OcrService ocrService; public ArchiveController(DigitalArchiveMapper mapper, OcrService ocrService) { this.mapper = mapper; this.ocrService = ocrService; } @PostMapping("/upload") public Map uploadAndRecognize(@RequestParam("file") MultipartFile file, @RequestParam("title") String title, @RequestParam("category") String category) { Map result = new HashMap<>(); try { // 1. 创建目录 File dir = new File(uploadDir); if (!dir.exists()) dir.mkdirs(); // 2. 保存文件 String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename(); File dest = new File(dir, fileName); file.transferTo(dest); // 3. 执行OCR识别 String ocrText = ocrService.extractText(dest); // 4. 数据入库 DigitalArchive archive = new DigitalArchive(); archive.setArchiveTitle(title); archive.setFilePath(dest.getAbsolutePath()); archive.setOcrContent(ocrText); archive.setCategory(category); archive.setCreateTime(LocalDateTime.now()); mapper.insert(archive); result.put("code", 200); result.put("message", "归档成功"); result.put("data", archive); return result; } catch (IOException e) { result.put("code", 500); result.put("message", "文件保存失败"); return result; } catch (Exception e) { result.put("code", 500); result.put("message", "OCR识别失败: " + e.getMessage()); return result; } } } ```

四、前端交互界面开发

使用Vue 3配合Element Plus构建简洁的档案上传界面。

1. 项目搭建与依赖

在命令行执行:npm create vite@latest archive-frontend -- --template vue。进入目录后执行:npm install axios element-plus

2. 核心页面逻辑

修改src/App.vue,实现文件选择、拖拽上传及识别结果展示。注意:需配置代理或直接指定后端地址。

```html ```

编写 ```

五、系统运行与验证

所有代码配置完成后,按以下步骤启动系统并进行全流程测试。

  1. 启动后端:在IDEA中运行带有@SpringBootApplication的主类。观察控制台,确认Tesseract初始化无异常,Tomcat运行在8080端口。
  2. 启动前端:在frontend目录下执行npm run dev。浏览器访问控制台显示的Local地址(通常是http://localhost:5173)。
  3. 功能测试
    • 准备一张包含中文文字的图片(如扫描件)。
    • 在网页输入“黔东南州府办-2023-001号”,选择“文书档案”。
    • 拖拽图片到上传区域,点击“开始归档识别”。
    • 观察结果:页面下方应弹出识别成功的提示,并在文本框中自动填充图片中的文字内容。
  4. 数据验证:登录MySQL数据库,执行SELECT FROM digital_archive ORDER BY id DESC LIMIT 1;,确认ocr_content字段存储了正确的识别文本。
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统