pytesseract和PIL库用法是什么?【详细教程】

2023-11-20

Tesseraet是一个命令行工具,安装后只能通过tsseraet命令在Python的外部运行,而不能通过import语句引人使用。为了解决上述问题,Python 提供了支持Tssraec-OCR引擎的Python版本的库pytesseract。

安装pytesseract需要遵守如下要求:

(1)Python的版本必须是python 2.5+或python 3.x。

(2)安装Python的图像处理库PIL(或Pillow )。

(3)安装谷歌的OCR识别引擎Tesseract-0CR。

下面将针对PIL和pytesseract的相关内容进行讲解。
 

pytesseract库概述

pytesseract是一款用于光学字符识别(OCR)的Python工具,即从图片中识别和读取其中嵌人的文字。ptesseract是对Tesseraet-OCR的一层封装,同时也可以单独作为Tesseract引擎的调用脚本,支持使用PIL库(Python Imaging Library)读取各种图片文件类型,包括jpeg、png、gif、bmp、tiff 等格式。作为脚本使用时,pytesseract将打印识别出的文字,而不是将其写入文件。

在pytesseract库中,提供了如下函数将图像转换成字符串:

image_to_string(image, lang=None, boxes=False, config=None)

上述函数用于在指定的图像上运行tesseract,首先将图像写人到磁盘,然后在图像上运行tesseract命令进行识别读取,最后删除临时的文件。其中,image表示图像,lang表示语言,默认使用英文。如果boxes设为True,那么batch.nochop makebox命令被添加到tesseract调用中;如果设置了config,则配置会添加到命令中,例如config = - psm 6。


PIL库概述

图像处理是一门应用非常广泛的技术,拥有丰富第三方打扩展库的Python语言也具有此项功能。其中,PIL(Python Imaging Library )是Python最常用的图像处理库,它不仅提供了广泛的文件格式支持,而且具有强大的图像处理功能。

PIL库中一个非常重要的类是Image类,该类定义在与它同名的模块中。创建Image类对象的方法有很多种,包括从文件中读取得到,或从其他图像经过处理得到,或者创建全新的。下面对PIL库的一些常用函数和方法进行简单介绍。
 

1.new()函数

new()函数的定义格式如下:

Image.new(mode, size, color=0)

上述函数用于创建一个新图像。其中,mode表示模式,size表示大小。当创建单通道图像时,color是单个值;当创建多通道图像时,color是一个元组。若省略了color参数,则图像被填充成全黑;若color参数的值为None,则图像不被初始化。

2. open()函数

open()函数的定义格式如下:

 open(fp, mode="r")


上述函数可以打开并识别给定的图像文件。其中,fp表示字符串形式的文件名称,mode参数可以省略,但只能设置为“r”。如果载人文件失败,则会引起一个IOError异常,否则返回一个Image类对象。

实际上,上述函数会被延迟操作,实际的图像数据并不会马上从文件中读取,而是等到需要处理这些数据时才被读取。这时,可以调用load0函数进行强制加载。

创建图像对象后,可以通过Image类提供的方法处理这些图像。为了让大家更好地理解,下面以常用的两个方法(save()和point()方法)进行说明。
 

(1) save()方法,其语法格式如下:

save(self, fp, format=None, **params)

上述方法将以特定的图片格式保存图片。大多数情况下,可以省略图片的格式。这时,该方法会根据文件的扩展名来选择相应的图片格式。具体示例代码如下:

image.save("test.jpg",'JPG")

或者:

save("test.jpg")


(2) point()方法:可以对图像的像素值进行变换。其语法格式如下:

point(self, lut, mode=None)

在大多数场合中,可以使用函数(带一个参数)作为参数传递给point()方法,图像的每个像素都会使用这个函数进行变换。示例代码如下:

# 每个像素乘以1.2
out=im.point(lambda i: i *1.2)

需要注意的是,如果图像的模式为“I”(整数)或“F”(浮点数),则必须使用函数,且必须具有以下格式:

argument (参数) *scale (倍率) +offset(偏移量)

例如,映射浮点图像的示例如下:

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

pytesseract和PIL库用法是什么?【详细教程】 的相关文章

  • java-IO流(5)-IO流中的设计模式(装饰器模式和适配器模式)的介绍

    目录 1装饰器模式 1 1定义 1 2代码实现 1 3装饰器特点 1 4装饰器在IO流中的使用 2配适器模式 2 1Adapter适配器 2 2代码实例 2 3适配器特点 2 4适配器优缺点 2 5适配器在IO中的使用 3装饰器与适配器异同
  • C++中STL的string vector使用笔记

    文章目录 容器 STL使用的基本方式 常用容器的基本概念和使用 string容器的特性 string初始化 拼接 赋值 查找 初始化 赋值操作 取值操作 拼接操作 查找 string替换 比较 字串 插入和删除 替换 比较 截取子串 插入删
  • 对象池GenericObjectPoolConfig

    Apache commons pool本质上是 对象池 即通过一定的规则来维护对象集合的容器 commos pool在很多场景中 用来实现 连接池 任务worker池 等 大家常用的dbcp数据库连接池 也是基于commons pool实现

随机推荐

  • 互联网创业盈利模式指南

    看了很多创业的case 都有点下笔千言 离题万里的 情况 就是很多case都很精彩 但是公司 的价值最终是落实到 给创业者和投资人的回报的 因此 所有的case 最终都是 落实到盈利 模式上 一位投资人士说的很明确 中国的盈利模式很简单 就
  • 一、深度学习之anaconda以及Tensorflow的安装

    1 anaconda安装 在官网Free Download Anaconda下载anaconda5 2 Python3 6 按照下一步直到安装结束 注意 将两个选项都勾选上 将安装路径写入环境变量 2 安装Tensorflow 1 建立一个
  • 围棋吃子问题

    题目 Given a 2D board containing X and O capture all regions surrounded by X A region is captured by flipping all O s into
  • 浮生六记

    浮生六记 目录 浮生六记卷一 闺房记乐 002 浮生六记卷二 闲情记趣 015 浮生六记卷三 坎坷记愁 022 浮生六记卷四 浪游记快 034 浮生六记 2 浮生六记卷一 闺房记乐 余生乾隆癸未冬十一月二十有二日 正值太平盛世 且在 衣冠之
  • Android 性能优化系列:崩溃原因及捕获

    文章目录 崩溃的基本原因 抛出异常导致崩溃分析 AMS 如何承接应用的异常信息上报 对于 native crash 系统如何做处理 系统如何处理 ANR 异常数据 addErrorToDropBox DropBoxManager 在 Cra
  • 用简单易懂的话语来快速入门windows缓冲区溢出

    用简单易懂的话语来快速入门windows的缓冲区溢出教程 准备工具 immunity debugger https www immunityinc com products debugger WINDOWS的程序动态调试工具 Vulnser
  • matlab_多目标遗传算法

    前言 之前写过在python中的多目标遗传算法了 但是很可惜的是python调用商用有限元软件比较费事 需要在ironpython的编译环境下调用 然后这个ironpython它又是个老古董 不支持pandas和numpy这些python必
  • Transformer 模型详解

    本内容主要参照 此篇 然后结合个人理解新增和删减部分内容形成 文章目录 1 1 Transformer 概览 1 2 引入张量 1 3 Self Attention 自注意力 1 3 1 Self Attention 概览 1 3 2 Se
  • VirtualBox虚拟机网络连接设置的四种方式

    VirtualBox是一款SUN出品的非常优秀的虚拟机程序 版本也非常齐全 你可以在官网上找到适合各种操作系统平台的版本 这里我先给大家大致讲解下VBox的网络配置及应用 VirtualBox的提供了四种网络接入模式 它们分别是 1 NAT
  • mid360 SLAM 建图实现

    用别人分享的数据集试了下 室内建图问题不大 室外还不确定
  • Exynos4412 中断驱动开发(一)—— 中断基础及中断的注册过程

    一 中断基础概念 所谓中断 指CPU在执行程序的过程中 出现了某些突发事件即待处理 CPU必须暂停当前的程序 转去处理突发事件 处理完毕后CPU又返回原程序被中断的位置并继续执行 1 中断分类 a 内部中断和外部中断 根据中断的的来源 中断
  • (数据结构)树转换为二叉树、森林转换为二叉树、二叉树转换为树、二叉树转换为森林及树与森林的遍历

    1 树转换为二叉树 1 加线 在所有兄弟结点之间加一条线 2 去线 对树中每个结点 只保留它与第一个孩子结点的连线 删除它与其他孩子结点之间的连线 3 层次调整 以树的根结点为轴心 将整棵树顺时针旋转一定的角度 使之结构层次分明 注意第一个
  • 结束了在MSRA的实习

    从5月到11月底 总共在MSRA渡过了7个月的实习时光 这7个月似乎是我感觉过得最快的7个月 或许是一个人在北京 生活上没有太多的琐事 只有很单纯的工作 于是就有这种时光飞逝的感觉 当然 记忆里面也并非都是工作上的事情 在MSRA还认识来自
  • 通过External Tools在STM32CubeIDE下使用DAP-LINK

    目录 一 文章背景 二 准备工作 2 1 Stm32CubeIDE 2 2 DAP LINK 2 3 STM32目标板 三 配置过程 3 1 连接目标板 3 2 配置仿真器 3 3 更改调试设置为远程调试 3 4 新建OpenOcd扩展工具
  • 5种方法教你用Python玩转histogram直方图

    作者 xiaoyu 知乎 https zhuanlan zhihu com pypcfx 介绍 一个半路转行的数据挖掘工程师 直方图是一个可以快速展示数据概率分布的工具 直观易于理解 并深受数据爱好者的喜爱 大家平时可能见到最多就是 mat
  • 腾讯技术面经-后台-云计算虚拟化部门

    1 笔试 不区分 都是软开岗位 2个小时 一般1小时足够了 25道选择题 10道填空 还有2个选做题 涉及到操作系统 内存 HTTP协议 TCP UDP协议 LLR 0 LLR 1 数据结构 算法 C语言 协议 Ipv4
  • UE5学习笔记(一)——界面功能梳理&第一天知识点记录

    学习UE5的第一步 是软件安装 默认是安装好的 由于安装没有太多技术含量 所以就没有专门做记录 这里有个注意点 虚幻引擎是整合在Epic games launcher中的 也就是说开发引擎内嵌在游戏平台上 打个比方 就是如果你要下unity
  • SpringBoot项目拦截器过滤器配置

    1 我们在配置拦截器时需实现接口HandlerInterceptor package com example springbootdemo common conf interceptor import com example springb
  • QT窗体间传值总结

    在写程序时 难免会碰到多窗体之间进行传值的问题 依照自己的理解 我把多窗体传值的可以使用的方法归纳如下 1 使用QT中的Signal Slot机制进行传值 2 使用全局变量 3 使用public形式的函数接口 4 使用QT中的Event机制
  • pytesseract和PIL库用法是什么?【详细教程】

    Tesseraet是一个命令行工具 安装后只能通过tsseraet命令在Python的外部运行 而不能通过import语句引人使用 为了解决上述问题 Python 提供了支持Tssraec OCR引擎的Python版本的库pytessera