开源OCR引擎Tesseract-OCR

2023-11-03

Overview

Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。 数年以后,HP意识到,与其将
Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生–2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对 Tesseract进行改进、消除Bug、优化工作。
Tesseract目前已作为开源项目发布在Google Project,其项目主页在这里查看。为了方便起见,我们直接使用apt-get进行安装, 想自己编译的可参考官方
文档配置编译环境进行编译。

Environment


uname -a
Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3 x86_64 GNU/Linux

Steps:

1.安装tesseract-ocr以及相关依赖库:

sudo apt-get install tesseract-ocr-dev tesseract-ocr libtesseract-dev libleptonica-dev libpng-dev libtiff-dev libjpeg-dev
2.根据官方API文档编译第一个demo出来,验证开发环境的正确性:

/*tesseract.cpp*/
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
    char *outText;

    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    // Initialize tesseract-ocr with English, without specifying tessdata path
    if (api->Init(NULL, "eng")) {
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    }

    // Open input image with leptonica library
    Pix *image = pixRead("/usr/src/tesseract-3.02/phototest.tif");
    api->SetImage(image);
    // Get OCR result
    outText = api->GetUTF8Text();
    printf("OCR output:\n%s", outText);

    // Destroy used object and release memory
    api->End();
    delete [] outText;
    pixDestroy(&image);

    return 0;
}

g++ tesseract.cpp -o tesseract -ltesseract -llept
3.如果没有什么错误的话会生成tesseract,执行该应用:

./tesseract

OCR output:
This is a lot of 12 point text to test the
ocr code and see if it works on all types
of file format.

The quick brown dog jumped over the
lazy fox. The quick brown dog jumped
over the lazy fox. The quick brown dog
jumped over the lazy fox. The quick
brown dog jumped over the lazy fox.

这个Demo主要是将/usr/src/tesseract-3.02/phototest.tif这幅图片上的文字通过tessert-ocr的API转化为文本,然后打印到终端。

Notice

其他发行版的Linux也可参考本文进行配置Tessert-OCR开发环境。可能会遇到的问题汇总:

编译错误:
1.未正确安装tesseract-ocr的开发库(本文中提到的是:libtesseract-dev)

tesseract.cpp:1:32: error: tesseract/baseapi.h: No such file or directory
2.未正确安装leptonica的开发库(本文中提到的是:libleptonica-dev)

tesseract.cpp:2:35: error: leptonica/allheaders.h: No such file or directory
链接错误:
1.未正确链接libtesseract

tesseract.cpp:(.text+0x21): undefined reference to `tesseract::TessBaseAPI::TessBaseAPI()'
tesseract.cpp:(.text+0x94): undefined reference to `pixRead'
tesseract.cpp:(.text+0xab): undefined reference to `tesseract::TessBaseAPI::SetImage(Pix const*)'
tesseract.cpp:(.text+0xb7): undefined reference to `tesseract::TessBaseAPI::GetUTF8Text()'
tesseract.cpp:(.text+0xdd): undefined reference to `tesseract::TessBaseAPI::End()'
tesseract.cpp:(.text+0xfc): undefined reference to `pixDestroy'
/tmp/ccqn3zaC.o: In function `tesseract::TessBaseAPI::Init(char const*, char const*)':
2.未正确链接libleptonica

/usr/bin/ld: /tmp/ccUzaM6g.o: undefined reference to symbol 'pixRead'
/usr/bin/ld: note: 'pixRead' is defined in DSO /usr/lib/liblept.so.3 so try adding it to the linker command line
/usr/lib/liblept.so.3: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
运行错误:
1.图片文件位置不正确:

Error in fopenReadStream: file not found
Error in pixRead: image file not found
Error in pixGetDimensions: pix not defined
Error in pixGetColormap: pix not defined
Error in pixClone: pixs not defined
Error in pixGetDepth: pix not defined
Error in pixGetWpl: pix not defined
Error in pixGetYRes: pix not defined
Please call SetImage before attempting recognition.OCR output:

根据图片位置修改代码中的文件路径:

Pix *image = pixRead("/usr/src/tesseract-3.02/phototest.tif");

若要下载本文中的代码可执行以下命令(请确保正确安装了git):


git clone https://github.com/Bootez/tesseract-ocr-linux.git

然后:


make
./tesseract
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开源OCR引擎Tesseract-OCR 的相关文章

  • OCR应用前的图像清理

    过去几个小时我一直在尝试 PyTesser 它是一个非常好的工具 关于 PyTesser 的准确性 我注意到以下几点 包含图标 图像和文本的文件 准确度 5 10 仅包含文本的文件 已删除图像和图标 准确率 50 60 拉伸文件 这是最好的
  • 替换图像的颜色

    我试图用白色替换图片的黑色 反之亦然 这实际上是为了让我的 OCR 代码可以在白色背景上更好地读取它 当前正在从剪贴板获取图像 Image img Clipboard GetImage pictureBox1 SizeMode Pictur
  • 【OCR】实战使用 - 如何提高识别文字的精准度?

    实战使用 如何提高文字识别的精准度 我们在平常使用OCR的时候 经常会出现文字识别不精准的情况 我们改如何提高文字识别的精度呢 以下是一些提高OCR Optical Character Recognition 光学字符识别 文字识别精准度的
  • 如何将 Tesseract OCR 库集成到 C++ 程序中

    我正在尝试使用Tesseract OCR 库 https code google com p tesseract ocr 为了创建一个程序来读取电梯楼层号码的图片 我还没有找到任何关于如何将 Tesseract 库包含到 C 文件中的示例
  • 除了 Tesseract 之外还存在哪些 OCR 选项? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么用 PIL 和 pytesseract 无法获取字符串?

    这是一个简单的Python 3光学字符识别 OCR 程序来获取字符串 我已经在这里上传了目标gif文件 请下载并另存为 tmp target gif try from PIL import Image except ImportError
  • java中pdf解析为文本

    我有一个阿拉伯语 PDF 我想使用 Java 将其解析为文本文档 我已经尝试了很多次 英语单词解析成功 但阿拉伯语单词解析失败 谁能推荐一个可以正确转换阿拉伯语单词的解决方案 我想到了几个图书馆 阿帕奇蒂卡 http tika apache
  • Android OCR 仅使用流行的 tessercat fork tess-two 检测数字

    我正在使用流行的 OCR tessercat fork for android tess twohttps github com rmtheis tess two https github com rmtheis tess two 我整合了
  • 了解 OCR 的 Freeman 链码

    请注意 我确实在寻找问题的答案 我是not寻找一些源代码或一些学术论文的链接 我已经使用了源代码 并且我已经阅读了论文 但仍然没有弄清楚这个问题的最后部分 我正在研究一些快速屏幕字体 OCRing 并且取得了很好的进展 我已经找到基线 分离
  • 目录:资产/tessdata

    我从 github 下载了 OCR 文本识别器 我的问题是 我想在不在线的情况下启动我的应用程序 但每次我在手机上安装 apk 时 它都会开始下载英语和 tesseract OCR 引擎 我找到了一个在线指南 其中说我必须在资产文件夹中创建
  • emgucv:C# 中的 pan 卡不正确的倾斜检测

    我有三个泛卡图像 用于使用 emgucv 和 c 测试图像的倾斜 顶部的第一张图像检测到 180 度工作正常 中间的第二张图像检测到的 90 度应检测为 180 度 第三张图像检测到 180 度应检测为 90 度 我想在这里分享的一个观察结
  • Android 中最好的 OCR(光学字符识别)示例 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想要一个在android中运行OCR的例子 我做了一些研究并找到了一个在android中实现OCR的例子 https github co
  • Tesseract 对阿拉伯语单词/字母不返回任何内容

    我已经安装了 Pytesseract 它可以完美地处理法语 英语文本以及数字 但是当我尝试阅读任何阿拉伯文本 字母时 它不会返回任何内容 这是我使用过的代码 try from PIL import Image except ImportEr
  • unicharset_extractor:找不到命令

    我想使用超正方体创建新的列车数据 因此 请按照以下网站中提到的步骤进行操作 https blog cedric ws how to train tesseract 301 https blog cedric ws how to train
  • Windows 7 OCR API

    我一直在审查 Office 2007 MODI OCR 的替代品 OneNote 2010 解决方案的质量 结果低于 2007 我注意到 一旦您安装了可选 tiff 过滤器 http technet microsoft com en us
  • 使用 OpenCV 对 Tesseract OCR 进行图像预处理

    我正在尝试开发一个应用程序 它使用 Tesseract 来识别手机摄像头拍摄的文档中的文本 我使用 OpenCV 来预处理图像以实现更好的识别 应用高斯模糊和阈值方法进行二值化 但结果非常糟糕 Here https s6 postimg c
  • Python Tesseract 无法识别这种字体

    我有这个图像 我想使用 python 将其读取为字符串 我认为这并不难 我发现了 tesseract 然后是使用 tesseract 的 python 脚本的包装器 所以我开始阅读图像 效果很好 直到我尝试阅读这张图像 我是否需要训练它来读
  • 让 tesseract 只识别数字

    我正在尝试改进我制作的 OCR 程序来读取我正在使用的某个图像的布局 现在 我希望我的 OCR 程序只能识别数字 0 9 我尝试遵循问题的解决方案 限制 tesseract 正在寻找的字符 https stackoverflow com q
  • OCR 扑克牌 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我决定做一个有趣的项目 我想将扑克牌的图像作为输入并返回其等级和花色 我认为我只需要查看左上角 因为那里包含了所有信息 它应该是稳健的
  • 从图像中识别数字

    我正在尝试编写一个应用程序来查找图像内的数字并将它们相加 如何识别图像中的书写数字 图像中有很多框 我需要获取左侧的数字并将它们相加得出总数 我怎样才能实现这个目标 编辑 我对图像进行了 java tesseract ocr 但没有得到任何

随机推荐

  • Pycharm 安装第三方库报错及解决方案——no such option: --build-dir

    Pycharm 安装第三方库报错及解决方案 no such option build dir Pycharm 安装第三方库报错及解决方案 no such option build dir 最近在学习路径规划相关内容 在运行GitHub上下载
  • 数据结构知识整理

    基于严蔚敏及吴伟民编著的清华大学C语言版教材并结合网上相关资料整理 http www docin com p 2027739005 html 第一章 绪论 1 数据结构 是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系
  • varifocal loss(VFL)介绍

    文章目录 一 论文链接 二 公式理解 代码 一 论文链接 https arxiv org pdf 2008 13367 pdf 二 公式理解 简单说明下 这里的IACS是IoU aware classification score的缩写 V
  • spring校验注解@valid和@validated重点获取校验消息

    spring校验注解 valid和 validated重点获取校验消息 valid作用范围类 方法参数 成员变量 可以用来做嵌套校验 validated作用范围类 方法参数 不可以用来做嵌套校验 可以分组 valid不可以分组 可以做一个全
  • STM32 us精确延时方式

    STM32精确延时方式 使用TIM定时器方式延时 使用空代码方式延时 F103系列 F429系列 本文纯属记录自己学习历程 如有不妥之处 欢迎指正 使用TIM定时器方式延时 使用STM32CubeMX配制TIM1定时 如下图所示 自动重装载
  • Flutter 修改appBar 高度

    Scaffold appBar PreferredSize child AppBar title Text AppBar bottom appBarView preferredSize Size fromHeight 60 0 自定义高度
  • C++输出螺旋数组

    C 输出螺旋数组 思路 具体实现代码如下 1 建立二维数组 2 声明变量 3 循环开始 3 1 第一个循环 数组从左到右赋值 3 2 第二个循环 数组从上到下赋值 3 3 第三个循环 数组从右到左赋值 3 4 第四个循环 数组从下到上赋值
  • vue3调用摄像头,做校验,没有摄像头或者不成功,提示用户

    检查浏览器是否支持getUserMedia方法 if navigator mediaDevices navigator mediaDevices getUserMedia 请求访问相机设备 navigator mediaDevices ge
  • SpringMvc源码分析(二) 请求执行前的准备过程:@Controller/@RequestMapping注解解析为RequestMappingInfo的过程

    在SpringBoot项目中 应用在启动时会扫描项目中的 Controller和 RequestMapping注解 并将其解析为RequestMapping Bean类型的对象供DispatcherServlet调用 本文主要分析这个解析的
  • 前端js的event光标事件实现div方块移动

    方法一 普通做法 div div
  • python入门学习小工具制作系列各种小工具整理

    一 制作基于windows系统批量重命名文件小工具 参考博客 使用python做一个批量重命名文件的小工具 讷言丶的博客 CSDN博客 效果展示 临时01 代码实现 import os from tkinter import filedia
  • 全面了解环保HJ212协议和使用

    1 环保HJ212协议介绍 环保HJ212协议是在环保行业中使用的数据传输协议 数据终端 采集终端 环保仪等终端设备把采集好的数据发送到环保平台使用这个协议 这个协议是环保行业的标准协议 所以实现了各种终端和平台之间的完美对接 只要符合协议
  • 送书 | 《商品期货量化交易实战》

    今天是周三 又到了给大家送书的时刻啦 这次给大家带来的是 商品期货量化交易实战 文末查看送书规则 简介 本书首先讲解量化交易基础和Python编程入门 再讲解量化交易API 然后讲解CTA的趋势跟踪策略和回归策略 并且配合量化交易策略实战案
  • leetcode【2023】

    什么是华为OD机试 华为OD机试是华为的笔试 因为是在电脑上做题 所以称为机试 主要用于评估求职者是否适合所申请的职位 华为OD机试通常涵盖了多个测试领域 如算法构造 编程技巧以及错误修复等 其目标是全面评估求职者的基础知识 实践技能和编程
  • gojs 绘制UML连线图

  • A Survey on Deep Transfer Learning 2018 翻译

    A Survey on Deep Transfer Learning 2018 翻译 o 虽然这篇文章是2018年的 不是很新 但是写的通俗易懂 很适合刚接触迁移学习的同学 所以就翻译了 independent and identicall
  • Python基础知识(七):类、对象与魔法方法

    类与对象 1 对象 属性 方法 对象是类的实例 换句话说 类主要定义对象的结构 然后我们以类为模板创建对象 类不但包含方法定义 而且还包含所有实例共享的数据 封装 信息隐蔽技术 我们可以使用关键字 class 定义 Python 类 关键字
  • CSS3 SVG实现可爱的动物哈士奇和狐狸动画

    点击上方公众号 可快速关注 英文 David Khourshid 译文 码农网 小峰 www codeceo com article css3 svg husky and fox html 今天 我想向大家展示如何巧妙地使用HTML CSS
  • 论"大数据"时代下的海量数据存储技术

    高清 长周期呈现海量存储需求 高清已经在安防行业全面铺开应用 除了带给用户能够看得更清的良好视觉感受外 对存储容量的需求亦成几何式增长 例如 前端IPC有130W到500W像素 码流也从有2Mbps到8Mbps 而一个130W像素 8Mbp
  • 开源OCR引擎Tesseract-OCR

    Overview Tesseract的OCR引擎最先由HP实验室于1985年开始研发 至1995年时已经成为OCR业内最准确的三款识别引擎之一 然而 HP不久便决定放弃OCR业务 Tesseract也从此尘封 数年以后 HP意识到 与其将