如何基于Tesseract实现图片的文本识别

server/2024/11/17 16:31:49/

       在前一篇文章基础上,如何将报告图片中的文本解析出来,最近研究了基于Tesseract的OCR方案,Tesseract OCR是一个开源的OCR引擎,主要结合开源的tesseract和pytesseract,实现了jpg/png等格式图片文本识别,供大家参考,具体步骤和测试示例如下。

1.下载和安装tesseract和pytesseract

先安装pytesseract包,安装命令:pip3 install pytesseract
下载tesseract工具,地址:Home · UB-Mannheim/tesseract Wiki · GitHub
下载支持语言包(tessdata),地址:https://github.com/tesseract-ocr/tessdata,解压后拷贝到D:\tools\Tesseract-OCR目录下。

2.配置环境变量

配置环境到path变量:D:\xxx\Tesseract-OCR\tessdata和D:\xxx\Tesseract-OCR
增加环境变量TESSDATA_PREFIX=D:\xxx\Tesseract-OCR\tessdata
查看Tesseract的配置运行情况:tesseract -v 和 tesseract --list-langs

3.修改tesseract_cmd命令路径

修改pytesseract下的pytesseract.py文件,将tesseract路径设置为如下路径,具体如下:
tesseract_cmd = 'D:\xxx\Tesseract-OCR\tesseract.exe'

4.测试示例
# 利用tesseract实现图像的OCR,通过OCR提取图像中的文本信息,详见txt目录。  
localFiles=['d:\img\1.jpg']
image = Image.open(Path(localFiles[i]))
ocr_text = pytesseract.image_to_string(image) 
ocrfilename = localFiles[i].split('\\')[-1][:-4]
with open(os.path.join(output_folder, f'{ocrfilename}.txt'), 'w',  encoding='utf-8') as ocr_file:  ocr_file.write(ocr_text)  
print(str(i) + ".", ocrfilename, ' is completed by ocr')
5.OCR识别结果

原始图片

识别文字结果


http://www.ppmy.cn/server/142685.html

相关文章

leetcode 35. 搜索插入位置 简单

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入…

Bottom-Up Attention(借助CNN)

系列博客目录 文章目录 系列博客目录1. Bottom-Up Attention的基本概念2. 如何借助CNN实现Bottom-Up Attention3. 与Top-Down Attention的对比4. Bottom-Up Attention的应用实例5. Bottom-Up Attention与CNN的结合6. Bottom-Up Attention的优点总结 “Bottom-Up Attention”&am…

docker安装minio、使用springboot集成minio同时创建并设置minio桶仅可读

docker-compose安装minio,并设置挂载目录 version: 3.8services:minio:image: minio/miniocontainer_name: minioenvironment:MINIO_ROOT_USER: rootMINIO_ROOT_PASSWORD: 123456789restarts: alwaysprivileged: trueports:- "9000:9000"- "9001:90…

微服务链路追踪skywalking安装

‌SkyWalking是一个开源的分布式追踪系统,主要用于监控和分析微服务架构下的应用性能。‌ 它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案,特别适用于微服务、云原生架构和基于容器的环境(如Docker、K8s、Mesos&…

记录no.28

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>; //一维数组&#xff0c;在地址中连续存放 int main() { int arr[] { 1,2,3,4,5,6,7,8,9,10 };//一个整型int占四个字节 int sz sizeof(arr) / sizeof(arr[0]); int i 0; /*for (i 0; i < …

【Linux】网络基础

目录 初识协议 协议分层 OSI七层模型 TCP/IP五层&#xff08;或四层&#xff09;模型 再识协议 为什么要有TCP/IP协议&#xff1f; 什么是TCP/IP协议&#xff1f; TCP/IP协议与操作系统的关系 究竟是什么协议 网络传输基本基本流程 局域网网络传输流程图 跨网络传输…

定时清理潜在客户列表中的无效邮箱可提高EDM电子邮件自动化营销邮件送达率

定时清理无效邮箱对于邮件营销来说&#xff0c;具有多重好处&#xff0c;这些好处直接关系到营销活动的效率、成本节约、品牌形象以及法律合规性。以下是几个关键方面&#xff1a; 提高邮件送达率&#xff1a; 无效邮箱&#xff08;如不存在、拼写错误或已废弃的邮箱地址&…

机器学习day3-KNN算法、模型调优与选择

五 sklearn机器学习概述 1.实例化预估器(估计器)对象(estimator)&#xff0c; 预估器对象很多,都是estimator的子类&#xff08;1&#xff09;用于分类的预估器sklearn.neighbors.KNeighborsClassifier k-近邻sklearn.naive_bayes.MultinomialNB 贝叶斯sklearn.linear_model.L…