黔东南数字档案馆系统搭建与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 -version和node -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引擎。
2. 数据源与OCR配置
在src/main/resources/application.yml中配置数据库连接信息及Tesseract的数据文件路径。注意:tess.data.path必须指向你安装Tesseract时的tessdata文件夹目录。
3. 实体类与持久层
创建DigitalArchive实体类,对应数据库表结构。

创建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 BaseMapper4. OCR识别业务实现
这是系统的核心,负责将上传的图片转换为可检索的文本。创建OcrService。
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四、前端交互界面开发
使用Vue 3配合Element Plus构建简洁的档案上传界面。
1. 项目搭建与依赖
在命令行执行:npm create vite@latest archive-frontend -- --template vue。进入目录后执行:npm install axios element-plus。
2. 核心页面逻辑
修改src/App.vue,实现文件选择、拖拽上传及识别结果展示。注意:需配置代理或直接指定后端地址。
黔东南数字档案馆 - 档案归档
识别结果预览
归档ID:{{ result.id }}
识别全文:
编写逻辑:
五、系统运行与验证
所有代码配置完成后,按以下步骤启动系统并进行全流程测试。
- 启动后端:在IDEA中运行带有
@SpringBootApplication的主类。观察控制台,确认Tesseract初始化无异常,Tomcat运行在8080端口。 - 启动前端:在frontend目录下执行
npm run dev。浏览器访问控制台显示的Local地址(通常是http://localhost:5173)。 - 功能测试:
- 准备一张包含中文文字的图片(如扫描件)。
- 在网页输入“黔东南州府办-2023-001号”,选择“文书档案”。
- 拖拽图片到上传区域,点击“开始归档识别”。
- 观察结果:页面下方应弹出识别成功的提示,并在文本框中自动填充图片中的文字内容。
- 数据验证:登录MySQL数据库,执行
SELECT FROM digital_archive ORDER BY id DESC LIMIT 1;,确认ocr_content字段存储了正确的识别文本。