截止笔者发文(2019.12.25),tesseract-ocr 最新发布的稳定版本是4.1.0. 而tesseract-ocr需要依赖leptonica,截止笔者发文,最新稳定版本是1.78.0
经过测试得出如下结论:
- 对于宋体,白色背景,非倾斜等,像素大于等于300dpi—识别率%100
- 英文和数字,识别率超过90%
- 特殊字符识别率不高
- 像素太低,识别率急剧下降
- 多种背景颜色变化,识别率极低
- 字体换成草书等,识别率大幅降低
- 电影屏幕字幕和网页截图识别率较低
- 扫描件如果字体太淡,太小,完全识别不出来
- 提高识别率,需要自己做训练集,工作量巨大的体力活(简体汉字最少6753个,混合一些复杂的,至少要10000个字符;不同字体要重新做,因为本质上是图形几何计算,国内科研院所和开源的做的不多—待确认)
转载请注明出处:https://www.cnblogs.com/NaughtyCat/p/how-to-install-tesseract-ocr-on-windows-and-centos.html
- Windows
(1)详情请移步至如下链接,下载安装:
https://github.com/UB-Mannheim/tesseract/wiki
(2)配置环境变量(跟JAVA一样)及添加TESSDATA_PREFIX请参见:
https://www.cnblogs.com/jianqingwang/p/6978724.html
注意需要下载训练集—traineddata:
https://github.com/tesseract-ocr/tessdata
中文请选如下4个:
chi_sim.traineddata (简体— 对于宋体,像素>= 300dpi:识别率高达%100,同时对英文及阿拉伯数字识别率高达百分之90以上)
chi_sim_vert.traineddata (简体,竖排)
chi_tra.traineddata (繁体)
chi_tra_vert.traineddata(繁体,竖排)【CoderBaby】
- CentOS 6
(1)下载Leptonica 和 Teseract 源码
wget http://www.leptonica.org/source/leptonica-1.78.0.tar.gz
wget https://github.com/tesseract-ocr/tesseract/archive/4.1.0.tar.gz
(2)配置、编译和安装
$ tar xzvf leptonica-1.78.0.tar.gz
$ cd leptonica-1.78.0
$ ./configure
$ make
$ sudo make install
$ tar xzf tesseract-ocr-4.1.0.tar.gz
$ cd tesseract-4.1.0
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig
(3)下载语言包,并且拷贝到testdata
$ wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.eng.tar.gz
$ tar xzf tesseract-ocr-3.02.eng.tar.gz
$ sudo cp tesseract-ocr/tessdata/* /usr/local/share/tessdata
- 测试数据(图片)说明及下载地址
具体说明及测试效果请参见:https://ocr.space/blog/2015/03/best-ocr-software-for-chinese.html
相关测试图片请参见:https://github.com/A9T9/OCR-Benchmark
- 如何做自己的测试数据集
请参考官网:https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract-3.00%E2%80%933.02
- Java源码实现,tika集合Tesseract-OCR
(1)源码如下(支持多个图片识别)
@Test public void testCode() throws IOException, SAXException, TikaException, InterruptedException { List<String> fileNames = new ArrayList<>(); fileNames.add("chi_eng.png"); fileNames.add("chi_eng01.png"); fileNames.add("chi_old.png"); fileNames.add("chi-scan-75dpi.jpg"); fileNames.add("chi-scan-100dpi.jpg"); fileNames.add("chi-scan-300dpi.jpg"); fileNames.add("chi-smartphone.jpg"); fileNames.add("chi-subtitle-v1.jpg"); fileNames.add("english00.png"); fileNames.add("pdf_shaomiao.png"); fileNames.add("test.tiff"); fileNames.add("weather.png"); // 转载请注明出处:https://www.cnblogs.com/NaughtyCat/p/how-to-install-tesseract-ocr-on-windows-and-centos.html TesseractOCRParser parser = new TesseractOCRParser(); TesseractOCRConfig config = new TesseractOCRConfig(); // 设置简体中文训练集 config.setLanguage("chi_sim"); // 设置Tesseract 安装路径 config.setTesseractPath("C:/Program Files/Tesseract-OCR"); // 设置train data 路径 config.setTessdataPath("C:/Program Files/Tesseract-OCR/tessdata"); ParseContext context = new ParseContext(); context.set(TesseractOCRConfig.class, config); context.set(TesseractOCRParser.class, parser); fileNames.forEach(filename -> { BodyContentHandler handler = new BodyContentHandler(); File file = new File("E:/tika/testData" + File.separator + filename); if (file.exists()) { Metadata metadata = new Metadata(); try (InputStream stream = new FileInputStream(file)) { parser.parse(stream, handler, metadata, context); } catch (Exception e) { } handler.toString(); } }); } }
(2)原始图片及效果
转换效果如下图:
参考:
1)https://*.com/questions/23792373/installing-tesseract-ocr-on-centos-6
2)http://www.zmonster.me/2015/04/17/tesseract-install-usage.html
*****************************************************************************************************
精力有限,想法太多,专注做好一件事就行
- 我只是一个程序猿。5年内把代码写好,技术博客字字推敲,坚持零拷贝和原创
- 写博客的意义在于打磨文笔,训练逻辑条理性,加深对知识的系统性理解;如果恰好又对别人有点帮助,那真是一件令人开心的事
*****************************************************************************************************