本文介绍怎样基于Tesseract开发OCR的功能。
1. 源码
地址:https://github.com/tyrival/SpringBoot-Dubbo-Sample
2. Tesseract
2.1 准备
- 安装Tesseract,安装方法:https://github.com/tesseract-ocr/tesseract/wiki
- 下载官方的训练库,里面包含许多语言,这里只需要简体中文chi_sim.traineddata,下载地址:https://github.com/tesseract-ocr/tessdata
2.2 pom.xml
最重要的是下面这个Tess4j,
1 | <dependencies> |
2.3 Tessdata
将第一步中下载的chi_sim.traineddata放在/src/main/resources/tessdata中,作为当前工程的训练库,基本可以识别大部分印刷体中文。如果有个性化的需求,例如艺术字、手写稿等,可以在网上搜索训练方法,非常简单,基本就是通过命令行加载并识别稿件,并对成果进行手工校准,校准完成之后就能形成个性化的训练库。
2.4 application.properties
1 | # 设置训练库的路径,即在resources中的文件夹名 |
2.4 OcrServiceImpl.java
1 | import com.alibaba.dubbo.config.annotation.Service; |
2.5 OrcUtil.java
1 | package com.tyrival.ocr.utils; |
2.6 问题
在MacOS下运行工程,如果通过controller模块中的/ocr/do
接口运行,在识别过程中会崩溃,错误日志反应似乎是和dubbo有冲突,Windows和Linux还没测试,不知道是不是MacOS特有的。
解决办法:直接在ocr模块中建立controller,直接访问本模块的service,不通过dubbo进行远程调度,就不会出现这个问题。