Tesseract,一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,特点是开源,免费,支持多语言,多平台。

在搭建流程很简单:

(1)下载并安装 tesserct-ocr(记住安装路径)

Windows版exe安装文件地址:https://github.com/UB-Mannheim/tesseract/wiki

(2)安装pytesseract:

在cmd中,直接:pip install pytesseract

(3)配置下环境:

其中pytesseract.py文件存储在Python包文件夹中,你可以使用如下语句找到其绝对路径:

(4)编写4行代码测试OCR识别效果:

——————————————————————————————————————————————————————————————————

上述流程很简单,但是实际上自己花了近3个小时才疏通该环境,其中近两个小时在解决一个报错问题:

无论我怎么修改pytesseract.py那行语句(比如路径用 \\双斜杠、或路径前加‘r’,或用‘/’反斜杠,或去掉.exe),或是修改环境变量,或是重启jupyter notebook,找遍网上几乎所有解答,几乎都没用。

其中步骤(3)配置环境中,自己也早使用方法3尝试解决过这个问题,但当时没起作用,当时也不清楚方法3的真实作用。经过近两个小时捣鼓后,终于在https://blog.csdn.net/jacke121/article/details/75443785博客中找到解决办法。

我直接粘贴复制其代码,修改了图片路径和pytesseract.py路径,在jupyter notebook中执行后,瞬间看到了OCR识别结果。泪崩~

问题原因:

(1)起始当初自己也用过方法3,但报了一个错,依旧是“系统找不到指定文件”,自己就以为该方法同样不起作用。其实那时,自己在使用该方法时,没有意识到路径要使用 \\ 或者 / 或者 加前缀r,依旧使用的 \ !

而之后再寻找答案中,明白路径怎么写后,又忘记当初测试方法3时用错了路径规则。真是‘测不逢时’。。。

(2)导致“系统找不到指定文件”的原因是:pytesseract.py文件在E盘,而自己jupyter notebook默认只能浏览F盘内文件,为了能够在jupyter中浏览pytesseract.py文件的内容(比用记事本打开更直观、也比其他软件更快速),我就手残将该文件复制了一份到用于测试该项目的jupyter源文件夹内,而由于我在测试代码里写了:,所以测试代码一直import的是我刚才复制的那一份pytesseract.py,而后续所有环境配置的操作,都是修改的是E盘中那份原始pytesseract.py。所以无论我怎么去改环境变量、修改原始pytesseract.py文件中的代码,报错依旧无法解决。

(3)在巧合下,某此复制别人代码,终于解决了这个问题。后来,通过溯源,也明白了很多技术原理,比如的作用,就是修改源文件中'tesseract_cmd'变量的值。

有用的参考:

https://github.com/nikhilkumarsingh/tesseract-python

https://blog.csdn.net/jacke121/article/details/75443785

https://blog.csdn.net/u011085172/article/details/71466182

在搭建tesseract-OCR环境中遇到问题和反省的更多相关文章

  1. Kubernetes集群搭建之企业级环境中基于Harbor搭建自己的私有仓库

    搭建背景 企业环境中使用Docker环境,一般出于安全考虑,业务使用的镜像一般不会从第三方公共仓库下载.那么就要引出今天的主题 企业级环境中基于Harbor搭建自己的安全认证仓库 介绍 名称:Harb ...

  2. 手动搭建的react环境中,关于图片引入的问题

    react手动搭建的环境,require引进来图片不显示,网页src显示[object module] 解决方案 (1)import引进图片 import anli from './img/anli. ...

  3. 图文详解如何快捷搭建LNMP服务环境

    上一篇与大家一起学习了下如何搭建LAMP环境的知识,今天小编再和大家分享下如何快捷地搭建LNMP环境,并搭建起一个网站.Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/S ...

  4. 如何在没有域的环境中搭建AlwaysOn(二)

    对DBA而言,不需要域就可以搭建SQL Server AlwaysOn是Windows Server 2016中最令人兴奋的功能了,它不仅可以降低搭建的成本,而且还减少了部署和运维的工作量. 上篇博客 ...

  5. 如何在没有域的环境中搭建AlwaysOn(一)

    对DBA而言,不需要域就可以搭建SQL Server AlwaysOn是Windows Server 2016中最令人兴奋的功能了,它不仅可以降低搭建的成本,而且还减少了部署和运维的工作量. 该特性可 ...

  6. Idea开发环境中搭建Maven并且使用Maven打包部署程序

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  7. [软件测试]Linux环境中简单清爽的Google Test (GTest)测试环境搭建(初级使用)

    本文将介绍单元测试工具google test(GTEST)在linux操作系统中测试环境的搭建方法.本文属于google test使用的基础教程.在linux中使用google test之前,需要对如 ...

  8. 苹果MAC中安装并搭建Android开发环境的详细步骤

    Android的开发平台搭建主要需要的工具有:Java虚拟机JDK.Eclipse.Eclipse插件ADT(Android Developer Tool)和Android开发包SDK,以下是具体的安 ...

  9. 在 Ubuntu 13.10 中搭建Java开发环境 - 懒人版

    本文记录我在Ubuntu 13.10中搭建Java开发环境. 本文环境: Ubuntu 13.10 x64运行在Win7下的VMware Workstation 10中. 1. 安装JDK与JRE s ...

随机推荐

  1. [CERC2017] Intrinsic Interval

    首先理清这奇葩题意表述 给出一个\(1\)到\(n\)的排列\(p[]\)和\(m\)次询问,每次询问覆盖区间\([l,r]\)的最小区间\([a,b]\),满足\([a,b]\)内的元素排序后是连续 ...

  2. 源码安装zabbix_agent4.0.3

    1.源码包下载地址:https://www.zabbix.com/download_sources 2.下载完后上传在任意目录用root用户创建以下脚本server_ip为服务端ip然后执行. gro ...

  3. HUSTOJ:Transit Tree Path

    问题 D: Transit Tree Path   You are given a tree with N vertices.Here, a tree is a kind of graph, and ...

  4. Java基础14:离开IDE,使用java和javac构建项目

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  5. HotSpot虚拟机对象相关内容

    一.对象的创建 1.类加载检查 普通对象的创建过程:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载.解析和初始化 ...

  6. 初学Java Web(2)——搭建Java Web开发环境

    虽然说 html 和 css 等前端技术,是对于 Web 来说不可或缺的技术,但是毕竟更为简单一些,所以就不详细介绍了,没有基础的同学可以去菜鸟教程或者W3school进行自主学习,最好的方式还是做一 ...

  7. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理

    在RDIFramework.NET以往的框架中,模块管理界面展示了整个框架所管理的所有模块,如果系统过多,达几十个甚至上百个子系统时,管理起来就非常的麻烦,不光加载效率会很低,页面展示也会很不友好.框 ...

  8. [三]基础数据类型之Integer详解

        Integer 基本数据类型int  的包装类 Integer 类型的对象包含一个 int 类型的字段     属性简介 值为 2^31-1 的常量,它表示 int 类型能够表示的最大值 @N ...

  9. js中如何在不影响既有事件监听的前提下新增监听器

    一. 需求澄清 比如某个按钮已经绑定了2-3个对Window对象的load事件的监听,现在需要添加一个新的对click事件的监听器,但在一定条件下才会同时触发原有的2-3个load监听器,否则只触发新 ...

  10. ----Juquery复选框全选反选及获取选中值Value

    --获取选中值 var pList = ""; $("[name='ckdProd']").each(function () { if ($(this).is( ...