python通过pytesseract使用tesseract-ocr进行中/英文字识别

Song • 4002 次浏览 • 0 个回复 • 2019年01月16日

Python-tesseractpython的光学字符识别(OCR)工具。也就是说,它将识别并读取嵌入图像中的文本。

Python-tesseractGoogle的Tesseract-OCR引擎的包装器。它作为独立的调用脚本也很有用,因为它可以读取Python Imaging Library支持的所有图像类型,包括jpeg,png,gif,bmp,tiff等,而tesseract-ocr默认只支持tiffbmp。此外,如果用作脚本,Python-tesseract将打印已识别的文本,而不是将其写入文件。

一、用法

快速开始

try:
    from PIL import Image
except ImportError:
    import Image
import pytesseract

# 如果PATH中没有tesseract可执行文件,请包含以下内容:
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# 如 tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'

# 简单的图像串
print(pytesseract.image_to_string(Image.open('test.png')))

# French text image to string
print(pytesseract.image_to_string(Image.open('test-european.jpg'), lang='fra'))

# Get bounding box estimates
print(pytesseract.image_to_boxes(Image.open('test.png')))

# Get verbose data including boxes, confidences, line and page numbers
print(pytesseract.image_to_data(Image.open('test.png')))

# Get information about orientation and script detection
print(pytesseract.image_to_osd(Image.open('test.png')))

# In order to bypass the image conversions of pytesseract, just use relative or absolute image path
# NOTE: In this case you should provide tesseract supported images or tesseract will return error
print(pytesseract.image_to_string('test.png'))

# Get a searchable PDF
pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf')

# Get HOCR output
hocr = pytesseract.image_to_pdf_or_hocr('test.png', extension='hocr')

支持OpenCV image/NumPy数组对象

import cv2

img = cv2.imread(r'/<path_to_image>/digits.png')
print(pytesseract.image_to_string(img))
# OR explicit beforehand converting
print(pytesseract.image_to_string(Image.fromarray(img))

如果tessdata出现类似Error opening data file...的报错,请添加以下配置:

# Example config: r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'
# It's important to add double quotes around the dir path.
tessdata_dir_config = r'--tessdata-dir "<replace_with_your_tessdata_dir_path>"'
pytesseract.image_to_string(image, lang='chi_sim', config=tessdata_dir_config)

1、功能

  • get_tesseract_version: 返回系统中安装的Tesseract版本。
  • image_to_string: 将图像上的Tesseract OCR运行结果返回到字符串
  • image_to_boxes: 返回包含已识别字符及其框边界的结果,需要Tesseract 3.05+。有关更多信息,请查看Tesseract TSV文档
  • image_to_osd: 返回包含有关方向和脚本检测的信息的结果。

2、参数

image_to_data(image, lang=None, config='', nice=0, output_type=Output.STRING)
  • image Object,由Tesseract处理的图像的PIL Image/NumPy数组
  • lang StringTesseract语言代码字符串
  • config String,任何其他配置字符串,例如:config='--psm 6'
  • nice Integer,修改Tesseract运行的处理器优先级。Windows不支持。Nice调整了unix-like流程的优点。
  • output_type 类属性,指定输出的类型,默认为string。有关所有支持类型的完整列表,请检查pytesseract.Output类的定义。

二、安装

先决条件:

  • Python-tesseract需要python 2.7+python 3.x.
  • 您将需要Python Imaging Library(PIL)(或Pillow fork)。在Debian/Ubuntu下,是python-imagingpython3-imaging
  • 安装Google Tesseract OCR(有关如何在Linux,Mac OSX和Windows上安装引擎的其他信息)。你必须能够调用Tesseract命令为tesseract。如果不是这种情况,例如因为tesseract不在您的PATH中,则必须更改tesseract_cmd变量pytesseract.pytesseract.tesseract_cmd。在Debian/Ubuntu下,您可以使用包tesseract-ocr。对于Mac OS用户。请通过homebrew安装tesseract

通过pip安装:

有关更多信息,请查看pytesseract页面

$ (env)> pip install pytesseract

或者如果你安装了git

$ (env)> pip install -U git+https://github.com/madmaze/pytesseract.git

从源代码安装:

$> git clone https://github.com/madmaze/pytesseract.git
$ (env)> cd pytesseract && pip install -U .

其它教程

如何加载中文数据集以及识别中文,首先前往github下载最新数据集tessdata为识别字体数据集。然后寻找到我们电脑中数据集地址:

find / -name "tessdata"
# 找到文件地址
# /usr/local/Cellar/tesseract/3.05.01/share/tessdata

将下载的中文数据集放在文件下直接使用即可

import pytesseract
from PIL import Image

# open image
image = Image.open('test.png')
code = pytesseract.image_to_string(image, lang='chi_sim')
print(code)

当然也可以自定义数据集位置:

import cv2
import pytesseract

img = cv2.imread("p1.png")
tessdata_dir_config = '--tessdata-dir "/tessdata/chi_sim.traineddata"'
# print(pytesseract.image_to_string(img, lang='chi_sim', config=tessdata_dir_config))

原创文章,转载请注明 :python通过pytesseract使用tesseract-ocr进行中/英文字识别 - pytorch中文网
原文出处: https://ptorch.com/news/231.html
问题交流群 :168117787
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
Pytorch是什么?关于Pytorch! python通过pyecharts使用百度echarts实现数据可视化