利用pytesser模块实现图片文字识别
- >>> from pytesser import *
- >>> image = Image.open('fnord.tif') # Open image object using PIL
- >>> print image_to_string(image) # Run tesseract.exe on image
- fnord
- >>> print image_file_to_string('fnord.tif')
- fnord
- <pre name="code" class="python">from pytesser import *
- #im = Image.open('fnord.tif')
- #im = Image.open('phototest.tif')
- #im = Image.open('eurotext.tif')
- im = Image.open('fonts_test.png')
- text = image_to_string(im)
- print text</pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- enhancer = ImageEnhance.Contrast(image1)
- image2 = enhancer.enhance(4)
可以再对image2调用 image_to_string识别
- """OCR in Python using the Tesseract engine from Google
- http://code.google.com/p/pytesser/
- by Michael J.T. O'Kelly
- V 0.0.2, 5/26/08"""
- import Image
- import subprocess
- import os
- import StringIO
- import util
- import errors
- tesseract_exe_name = 'dlltest' # Name of executable to be called at command line
- scratch_image_name = "temp.bmp" # This file must be .bmp or other Tesseract-compatible format
- scratch_text_name_root = "temp" # Leave out the .txt extension
- _cleanup_scratch_flag = True # Temporary files cleaned up after OCR operation
- _language = "" # Tesseract uses English if language is not given
- _pagesegmode = "" # Tesseract uses fully automatic page segmentation if psm is not given (psm is available in v3.01)
- _working_dir = os.getcwd()
- def call_tesseract(input_filename, output_filename, language, pagesegmode):
- """Calls external tesseract.exe on input file (restrictions on types),
- outputting output_filename+'txt'"""
- current_dir = os.getcwd()
- error_stream = StringIO.StringIO()
- try:
- os.chdir(_working_dir)
- args = [tesseract_exe_name, input_filename, output_filename]
- if len(language) > 0:
- args.append("-l")
- args.append(language)
- if len(str(pagesegmode)) > 0:
- args.append("-psm")
- args.append(str(pagesegmode))
- try:
- proc = subprocess.Popen(args)
- except (TypeError, AttributeError):
- proc = subprocess.Popen(args, shell=True)
- retcode = proc.wait()
- if retcode!=0:
- error_text = error_stream.getvalue()
- errors.check_for_errors(error_stream_text = error_text)
- finally: # Guarantee that we return to the original directory
- error_stream.close()
- os.chdir(current_dir)
- def image_to_string(im, lang = _language, psm = _pagesegmode, cleanup = _cleanup_scratch_flag):
- """Converts im to file, applies tesseract, and fetches resulting text.
- If cleanup=True, delete scratch files after operation."""
- try:
- util.image_to_scratch(im, scratch_image_name)
- call_tesseract(scratch_image_name, scratch_text_name_root, lang, psm)
- result = util.retrieve_result(scratch_text_name_root)
- finally:
- if cleanup:
- util.perform_cleanup(scratch_image_name, scratch_text_name_root)
- return result
- def image_file_to_string(filename, lang = _language, psm = _pagesegmode, cleanup = _cleanup_scratch_flag, graceful_errors=True):
- """Applies tesseract to filename; or, if image is incompatible and graceful_errors=True,
- converts to compatible format and then applies tesseract. Fetches resulting text.
- If cleanup=True, delete scratch files after operation. Parameter lang specifies used language.
- If lang is empty, English is used. Page segmentation mode parameter psm is available in Tesseract 3.01.
- psm values are:
- 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."""
- try:
- try:
- call_tesseract(filename, scratch_text_name_root, lang, psm)
- result = util.retrieve_result(scratch_text_name_root)
- except errors.Tesser_General_Exception:
- if graceful_errors:
- im = Image.open(filename)
- result = image_to_string(im, cleanup)
- else:
- raise
- finally:
- if cleanup:
- util.perform_cleanup(scratch_image_name, scratch_text_name_root)
- return result
- if __name__=='__main__':
- im = Image.open('phototest.tif')
- text = image_to_string(im, cleanup=False)
- print text
- text = image_to_string(im, psm=2, cleanup=False)
- print text
- try:
- text = image_file_to_string('fnord.tif', graceful_errors=False)
- except errors.Tesser_General_Exception, value:
- print "fnord.tif is incompatible filetype. Try graceful_errors=True"
- #print value
- text = image_file_to_string('fnord.tif', graceful_errors=True, cleanup=False)
- print "fnord.tif contents:", text
- text = image_file_to_string('fonts_test.png', graceful_errors=True)
- print text
- text = image_file_to_string('fonts_test.png', lang="eng", psm=4, graceful_errors=True)
- print text
- """OCR in Python using the Tesseract engine from Google
- http://code.google.com/p/pytesser/
- by Michael J.T. O'Kelly
- V 0.0.1, 3/10/07"""
- import Image
- import subprocess
- import util
- import errors
- tesseract_exe_name = 'tesseract' # Name of executable to be called at command line
- scratch_image_name = "temp.bmp" # This file must be .bmp or other Tesseract-compatible format
- scratch_text_name_root = "temp" # Leave out the .txt extension
- cleanup_scratch_flag = True # Temporary files cleaned up after OCR operation
- def call_tesseract(input_filename, output_filename, language):
- """Calls external tesseract.exe on input file (restrictions on types),
- outputting output_filename+'txt'"""
- args = [tesseract_exe_name, input_filename, output_filename, "-l", language]
- proc = subprocess.Popen(args)
- retcode = proc.wait()
- if retcode!=0:
- errors.check_for_errors()
- def image_to_string(im, cleanup = cleanup_scratch_flag, language = "eng"):
- """Converts im to file, applies tesseract, and fetches resulting text.
- If cleanup=True, delete scratch files after operation."""
- try:
- util.image_to_scratch(im, scratch_image_name)
- call_tesseract(scratch_image_name, scratch_text_name_root,language)
- text = util.retrieve_text(scratch_text_name_root)
- finally:
- if cleanup:
- util.perform_cleanup(scratch_image_name, scratch_text_name_root)
- return text
- def image_file_to_string(filename, cleanup = cleanup_scratch_flag, graceful_errors=True, language = "eng"):
- """Applies tesseract to filename; or, if image is incompatible and graceful_errors=True,
- converts to compatible format and then applies tesseract. Fetches resulting text.
- If cleanup=True, delete scratch files after operation."""
- try:
- try:
- call_tesseract(filename, scratch_text_name_root, language)
- text = util.retrieve_text(scratch_text_name_root)
- except errors.Tesser_General_Exception:
- if graceful_errors:
- im = Image.open(filename)
- text = image_to_string(im, cleanup)
- else:
- raise
- finally:
- if cleanup:
- util.perform_cleanup(scratch_image_name, scratch_text_name_root)
- return text
- if __name__=='__main__':
- im = Image.open('phototest.tif')
- text = image_to_string(im)
- print text
- try:
- text = image_file_to_string('fnord.tif', graceful_errors=False)
- except errors.Tesser_General_Exception, value:
- print "fnord.tif is incompatible filetype. Try graceful_errors=True"
- print value
- text = image_file_to_string('fnord.tif', graceful_errors=True)
- print "fnord.tif contents:", text
- text = image_file_to_string('fonts_test.png', graceful_errors=True)
- print text
在调用image_to_string函数时,只要加上相应的language参数就可以了,如简体中文最后一个参数即为 chi_sim, 繁体中文chi_tra,
- text = image_to_string(self.im, language = 'chi_sim')
至此,图片识别就完成了。
利用pytesser模块实现图片文字识别相关推荐
- python批量识别图片中文字_利用Python批量进行图片文字识别
实现逻辑 1. 批量获取图片的路径 2. 通过调用百度OCR接口批量识别图片 3. 将返回值写入txt 实现过程 1. 安装百度的Python SDK pip install baidu-aip 2. ...
- python批量图片文字识别_利用Python批量进行图片文字识别
实现逻辑 1. 批量获取图片的路径 2. 通过调用百度OCR接口批量识别图片 3. 将返回值写入txt 实现过程 1. 安装百度的Python SDK pip install baidu-aip 2. ...
- Python模块介绍使用:EasyOCR快速实现图片文字识别
hello,大家好,我是wangzirui32,今天我们来学习如何使用EasyOCR快速实现图片文字识别,开始学习吧! 1. 什么是OCR 2. 安装EasyOCR 安装命令: pip install ...
- 吴恩达《机器学习》第十八章:图片文字识别OCR
文章目录 十八.应用实例:图片文字识别OCR 18.1 问题描述和流程图 18.2 滑动窗口 18.3 获取大量数据和人工数据 18.4 上限分析:下一步工作 十八.应用实例:图片文字识别OCR 18 ...
- 吴恩达机器学习(十五)—— 应用实例:图片文字识别
应用实例:图片文字识别 1. 问题描述和流水线 2. 滑动窗口 3. 获取大量数据:人工数据合成 4. 上限分析:流水线的哪个模块最有改进价值 学习图片文字识别的应用实例要做的事情: 展示一个复杂 ...
- 2021-02-21 Python Easyocr 图片文字识别
Python Easyocr 图片文字识别 前段时间做了车牌识别相关的内容分享,参看: 车牌识别(1)-车牌数据集生成 车牌识别(2)-搭建车牌识别模型 今天给大家分享一个简单的OCR文本识别工具:e ...
- 吴恩达《Machine Learning》精炼笔记 12:大规模机器学习和图片文字识别 OCR
作者 | Peter 编辑 | AI有道 系列文章: 吴恩达<Machine Learning>精炼笔记 1:监督学习与非监督学习 吴恩达<Machine Learning>精 ...
- Android 图片文字识别DEMO(基于百度OCR)
前言 OCR 是 Optical Character Recognition 的缩写,翻译为光学字符识别,指的是针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,通过识别 ...
- python存数据库c读数据库喷码加工_python图片文字识别
Python语言读取Marc后处理文件基础知识_材料科学_工程科技_专业资料.Python语言简介,Marc计算结果文件读取,焊接模拟后处理实例 基于python 的焊接后处理知识要点: ? ?... ...
- (python)实现一个简单的图片文字识别脚本
文章目录 截图 文字识别## 访问剪切板 总结 快毕业了,除了准备答辩之外,就是看看书,各种瞎晃~ 那么,这两天在看书的时候遇到这么个问题: 首先,部分电子版的书籍是以扫描图片的形式展现的,在阅读过程 ...
最新文章
- 掌握 MySQL 这 19 个骚操作,效率至少提高3倍
- mysql+在服务中无法启动_MySQL服务初始化后无法启动
- js递归函数使用介绍
- 是否可以从一个static方法内部发出对非static方法的调用?
- 解锁UI自动化新姿势-UI Recorder
- 华硕笔记本自带win10改win7的方法
- React-Context
- omct问题之-webapps下多出的ROOT目录
- u盘被保护怎样解除?(第十招)
- 基于 MVP 的 Android 组件化开发框架实践 1
- mysql免费框架_MySQL(ORM框架)
- Newton迭代法求无约束目标函数极小值matlab实现
- Tapestry5单元测试
- 《Redis视频教程》(p19)
- 胡乱学Java_遇见类与对象
- 【思考】阿里云的混合云战略,凭啥扯上Zstack?
- 电脑配件 - 机械键盘的由来, 与普通键盘的区别以及如何选购及使用维护 - 学习/实践
- VUE+ ELEMENT 选人的弹窗组件
- NRF51822蓝牙服务(9)——动态修改设备的名称
- ei拼音的四个声调对应的字_幼儿园学前班拼音教案:复习 ei 以及四声调
热门文章
- Git 笔记 - git branch
- unity3d---物体加点击事件
- 软考报名全流程及注意事项
- node 爬虫 nightmare-handler
- python安装geopandas和Fiona报错:A GDAL API version must be specified.
- ​棱镜动态 | “TOPPer新训营”第二期开营啦!
- spring boot快速入门 4: jpa数据库操作 实现增删改查
- 数据分析 --- day16正则表达式
- 哪个语言更适合人工智能 女生能学人工智能吗
- 关于QTChart图表中附加文字标识(数据点名称)