我的tesseract学习记录(二)

前言:花了约三周看文档(打酱油),又花了两周搭环境,终于把tesseract用起来了,对简体中文的识别率还不错,在95%以上。现在简要记录一下安装、识别过程。

一、系统环境

  系统:centos6.5

  编译环境:g++

  依赖软件:leptonica、opencv2.4.9、tesseract3.02

二、安装过程

(1) leptonica

sudo yum -y install autoconf automake libtool
sudo yum -y install autoconf-archive
sudo yum -y install pkgconfig
sudo yum -y install libpng12-dev
sudo yum -y install libjpeg8-dev
sudo yum -y install libtiff5-dev
sudo yum -y install zlib1g-dev

wget http://www.leptonica.org/source/leptonica-1.68.tar.gz tar xvzf leptonica-1.68.tar.gz cd leptonica-1.68/ ./configure make && make install

(2) tesseract3.02

  tesseract的安装参考这里

  同时参考官网这里

  ./autogen.sh
  ./configure --enable-debug LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include"   make
  make install
  ldconfig

  语言文件:

  export TESSDATA_PREFIX=/some/path/to/tessdata

    to point to your tessdata directory (example: if your tessdata path is ‘/usr/local/share/tessdata‘ you have to use ‘export TESSDATA_PREFIX=‘/usr/local/share/‘).

    环境变量TESSDATA_PREFIX的路径需要设置成为tessdata文件夹的父目录。

(3) opencv2.4.9

  1. $ sudo yum -y install gtk2-devel tbb-devel libpng-devel
  2. $ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip
  3. $ unzip opencv-2.4.9.zip
  4. $ cd opencv-2.4.9
  5. $ mkdir build
  6. $ cd build
  7. $ cmake  -D  CMAKE_BUILD_TYPE=RELEASE  -D  CMAKE_INSTALL_PREFIX=/usr/local  ..
  8. $ make  -j2
  9. $ make install

三、API接口应用过程

(1) 编译过程

  1、设置PKG_CONFIG_PATH environment variable ,加入`tesseract.pc‘

     $echo ‘export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig‘ >> ~/.bashrc

     $source ~/.bashrc

  2、提示opencv缺libcufft,libnpps,libnppi,libnppc,libcudart等几个库,可以参考这里

    这些库在cuda/lib64中,建立软连接

    [[email protected] lib64]#ln -s /usr/local/cuda-6.5/lib64/libcufft.so.6.5 /usr/local/lib/libcufft.so

    [[email protected] lib64]#ln -s /usr/local/cuda-6.5/lib64/libnpps.so.6.5 /usr/local/lib/libnpps.so
    [[email protected] lib64]# ln -s /usr/local/cuda-6.5/lib64/libnppi.so.6.5 /usr/local/lib/libnppi.so
    [[email protected] lib64]# ln -s /usr/local/cuda-6.5/lib64/libnppc.so.6.5 /usr/local/lib/libnppc.so
    [[email protected] lib64]# ln -s /usr/local/cuda-6.5/lib64/libcudart.so.6.5 /usr/local/lib/libcudart.so

    在运行时,报错:

    error while loading shared libraries: libcufft.so.6.5: cannot open shared object file: No such file or directory

    error while loading shared libraries: libnpps.so.6.5: cannot open shared object file: No such file or directory

    error while loading shared libraries: libnppi.so.6.5: cannot open shared object file: No such file or directory

    error while loading shared libraries: libnppc.so.6.5: cannot open shared object file: No such file or directory

    error while loading shared libraries: libcudart.so.6.5: cannot open shared object file: No such file or directory

   

      解决方法,参考这里

    When I run testing routine, facing error: error while loading shared libraries: libcudart.so.6.5: cannot open shared object file: No such file or directory.

    Solution for this, copy respect library to /usr/local/lib:

    sudo cp /usr/local/cuda-6.5/lib64/libcudart.so.6.5 /usr/local/lib/libcudart.so.6.5 && sudo ldconfig

    sudo cp /usr/local/cuda-6.5/lib64/libcublas.so.6.5 /usr/local/lib/libcublas.so.6.5 && sudo ldconfig

    sudo cp /usr/local/cuda-6.5/lib64/libcurand.so.6.5 /usr/local/lib/libcurand.so.6.5 && sudo ldconfig

    

    最后的结果是能够成功进行识别,但是准确率较windows下有所下降,唯一的区别是,linux用的opencv是2.4.9,而windows中使用的2.4.10.

    

时间: 2024-10-12 14:07:10

我的tesseract学习记录(二)的相关文章

Windows API 编程学习记录<二>

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Spring Boot学习记录(二)--thymeleaf模板

Spring Boot学习记录(二)–thymeleaf模板 标签(空格分隔): spring-boot 自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好的和spring集成.下面开始学习. 1.引入依赖 maven中直接引入 <dependency> <groupId>org.springframework.boot</gr

netty 学习记录二

netty 最新版本是netty-5.0.0.Alpha1,去年10月份发布的,至今没有发新版本,估计这个版本还是比较稳定. 整包下载,里面包含一个 netty-example-5.0.0.Alpha1-sources.jar文件,提供了比较丰富的example例子,多看几遍还是非常有收获的,这里记录下. 先来看下channelHandler的两个不同继承: 方式一:直接从ChannelHandlerAdapter类里继承,读取操作从channelRead方法里执行 @Sharable publ

Mybatis学习记录(二)--Mybatis开发DAO方式

mybatis开发dao的方法通常用两种,一种是传统DAO的方法,一种是基于mapper代理的方法,下面学习这两种开发模式. 写dao之前应该要对SqlSession有一个更加细致的了解 一.mybatis的SqlSession使用范围 SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产

Spring学习记录(二)---容器和属性配置

下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/2428.html 建一个java project 三个java文件,一个xml文件 1 package com.guigu.spring.beans; 2 3 public class HelloWord { 4 private String name; 5 public String getName(

Tornado学习记录二

Coroutines Coroutines are the recommended way to write asynchronous code in Tornado. Coroutines use the Python yield keyword to suspend and resume execution instead of a chain of callbacks (cooperative lightweight threads as seen in frameworks like g

python学习记录二

一.列表(习惯了OC,总想把它叫成数组): names = ["ZhangYang","GuYun","XiangPeng","CuLiangChen"] names.append("LeiHaiDong")#添加names.insert(1,"ChenRongHua")#插入names[2] = "XieDi"#修改#删除names.remove("Che

Maven学习记录(二)--Maven核心概念

转载自 http://www.cnblogs.com/xdp-gacl/p/4051819.html 博主写的很好,所以直接转载过来了 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 version:项目的当前版本 packaging:项目的打包方式,最为常见的jar和war两种 样例: 1.3.Maven为什么使用坐标? Maven世界拥有大量构建,

webrtc学习———记录二:canvas学习

参考资料: http://bucephalus.org/text/CanvasHandbook/CanvasHandbook.html#getcontext2d https://developer.mozilla.org/zh-CN/docs/Web/HTML/Canvas http://www.w3school.com.cn/html5/html5_canvas.asp https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasEle