zoukankan      html  css  js  c++  java
  • 通过Tesseract实现简单的OCR

    Tesseract 简介

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

      数年以后,HP 意识到,与其将 Tesseract 束之高阁,不如贡献给开源软件业,让其重焕新生。2005 年,Tesseract 由美国内华达州信息技术研究所获得,并求诸于 Google 对 Tesseract 进行改进、消除 Bug、优化工作。

      目前 Tesseract 作为开源项目发布在 GitHub,其项目主页在这里查看,目前的新版本已经支持包括中文在内的超过 60 种语言的 OCR。

    安装 Tesseract

    注:因为众所周知的原因,Google 的相关网址需要翻墙访问。

    1. Windows
      • 访问下载页面,名称为 tesseract-ocr-setup-3.XX.exe 就是 Tesseract 安装程序,下载并安装。
      • 下载需要的语言包,例如简体中文就是 tesseract-ocr-3.02.chi_sim.tar.gz ,将解压出的chi_sim.trainedata文件复制到tessdata目录下。程序运行必须包含英语语言包,若tessdata目录下没有eng.trainedata文件,请自行下载英语语言包。
    2. Linux
      • 现在很多 Linux 软件仓库都已经包含 Tesseract 了,包名一般叫做 tesseract 或者 tesseract-ocr,搜索软件仓库并安装。
      • 访问下载页面,下载需要的语言包,例如简体中文就是 tesseract-ocr-XXX.chi_sim.tar.gz,将解压出的文件chi_sim.trainedata复制到tessdata目录下(一般为 /usr/share/tesseract-ocr/tessdata or /usr/share/tessdata)。程序运行必须包含英语语言包,若tessdata目录下没有eng.trainedata文件,请自行下载英语语言包。
    3. Mac OS X
      • 下载并安装 MacPorts
      • 使用命令sudo port install tesseract安装 tesseract。
      • 使用命令sudo port install tesseract-<langcode>安装语言包,各语言的 langcode 可以访问 MacPorts tesseract page 查看。
      • 当然也可以通过 Homebrew 安装tesseract:brew install tesseract。

    使用 Tesseract

    Tesseract 是一个命令行程序,命令格式为:

    tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]

    参数说明

      imagename 就是要识别的图片文件的名称,outputbase 就是识别结果输出文件的名称。

      lang 就是要识别的语言代码,例如英语为 eng、简体中文为 chi_sim 等等。可以同时识别多种语言,使用 “+” 相连,例如eng+chi_sim。缺省时识别英语。

      pagesegmode 为识别的具体模式,具体包含以下模式:

    • 0 = Orientation and script detection (OSD) only.
    • 1 = Automatic page segmentation with OSD.
    • 2 = Automatic page segmentation, but no OSD, or OCR
    • 3 = Fully automatic page segmentation, but no OSD. (Default)
    • 4 = Assume a single column of text of variable sizes.
    • 5 = Assume a single uniform block of vertically aligned text.
    • 6 = Assume a single uniform block of text.
    • 7 = Treat the image as a single text line.
    • 8 = Treat the image as a single word.
    • 9 = Treat the image as a single word in a circle.
    • 10 = Treat the image as a single character.

    如果想要简单地识别一张名为 test.png 的图片并将结果保存至 out.txt 中:

    tesseract test.png out

    或者采用简体中文语言包识别

    tesseract test.png out -l chi_sim

    我尝试使用 Tesseract 识别下面这张图片:

    pic-1

    使用 Tesseract 识别:

    pic-2

    识别结果:

    pic-3

    由此可见 Tesseract 对中文的识别很糟糕,毕竟它本来只是用来识别英语的,所以其他文字的识别率都比较差,特别是像汉字这种象形文字,必须要通过手动训练才能使用。可以参考另一篇文章《Tesseract训练》

    转载自http://xiaosheng.me/2015/12/18/article10/

                
  • 相关阅读:
    (Java) LeetCode 44. Wildcard Matching —— 通配符匹配
    (Java) LeetCode 30. Substring with Concatenation of All Words —— 与所有单词相关联的字串
    (Java) LeetCode 515. Find Largest Value in Each Tree Row —— 在每个树行中找最大值
    (Java) LeetCode 433. Minimum Genetic Mutation —— 最小基因变化
    (Java) LeetCode 413. Arithmetic Slices —— 等差数列划分
    (Java) LeetCode 289. Game of Life —— 生命游戏
    (Java) LeetCode 337. House Robber III —— 打家劫舍 III
    (Java) LeetCode 213. House Robber II —— 打家劫舍 II
    (Java) LeetCode 198. House Robber —— 打家劫舍
    (Java) LeetCode 152. Maximum Product Subarray —— 乘积最大子序列
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/9379357.html
Copyright © 2011-2022 走看看