Python脚本基于Tesseract-OCR实现图文识别

一、了解Tesseract-OCR

开源地址:https://github.com/tesseract-ocr/tesseract

Tesseract-OCR 是一个开源的光学字符识别(OCR)引擎,能够识别图片中的文字并将其转化为可编辑的文本。它最初由惠普公司(Hewlett-Packard)开发,后来由Google接管并继续维护和开发。Tesseract 是目前最强大且广泛使用的 OCR 引擎之一,支持多种语言,并且能够处理复杂的文本和布局。该开源引擎在github上拥有63k+的star。

主要特点:

  1. 开源与免费:Tesseract 是一个完全开源的项目,使用 Apache 2.0 许可证,任何人都可以免费使用和修改。
  2. 语言支持:Tesseract 支持多种语言,包括英文、中文、日文、法文等,还支持自定义语言训练。
  3. 高精度识别:Tesseract 能够处理各种图像质量的文本识别,精度较高,尤其适用于清晰的文本图像。
  4. 支持多种输入格式:支持输入图像格式如 JPEG、PNG、TIFF、GIF 等,还可以通过 PDF 文件进行 OCR 处理。
  5. 多平台支持:Tesseract 可以在多种操作系统上运行,包括 Linux、Windows 和 macOS。

二、安装Tesseract-ocr(以windows为例)

下载地址:https://github.com/UB-Mannheim/tesseract/wiki

点击下载后下载Windows安装包,然后双击安装,一直下一步即可。

安装完成后可以看到以下文件夹结构:

三、下载对应的训练语言数据

此步骤一般可以省略,因为下载安装后默认是有英文数据库的,如果需要识别其他语言可以在这一步下载配置。

下载地址:Traineddata Files for Version 4.00 + | tessdoc

下载后将.traineddata文件复制到tessdata文件夹中即可。

四、配置系统环境变量(Windows 系统

  1. 在任务栏搜索框中输入 环境变量,点击 编辑系统环境变量
  2. 点击 环境变量 按钮。

        

  1. 系统变量 区域中,点击 新建
    • 变量名:TESSDATA_PREFIX
    • 变量值:C:\Program Files\Tesseract-OCR\(这里是你的安装路径

        3. 确认保存,并关闭所有对话框。

至此,Tesseract-OCR就安装配置好了。

五、安装对应的python库

根据需要安装对应的python库:(我这里安装的多,有一些是非必须的,比如word文档库等)

pip install opencv-python pytesseract pandas openpyxl python-docx

六、编写脚本代码

python脚本源码:(此处源码为识别图片内容并另存为到txt文件中)

import pytesseract
import cv2

# 设置Tesseract路径(确保已安装Tesseract OCR并设置正确路径)
pytesseract.pytesseract.tesseract_cmd = r'D:\img_ocr\tesseract.exe'

def extract_text_from_image_and_save_to_txt(image_path, output_txt):
    """
    从图片中提取文本内容并保存到TXT文件
    :param image_path: 输入图片路径
    :param output_txt: TXT输出路径
    """
    # 读取图片
    img = cv2.imread(image_path)

    # 转换为灰度图像
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 二值化处理(提高对比度,便于OCR识别)
    _, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)

    # 使用Tesseract提取文本内容
    extracted_text = pytesseract.image_to_string(binary, config='--psm 6')

    # 将提取的文本保存到TXT文件
    with open(output_txt, 'w', encoding='utf-8') as file:
        file.write(extracted_text)

    print(f"文本已成功导出到 {output_txt}")

# 示例调用
image_path = '12345.png'  # 替换为你的图片路径
output_txt = 'output2.txt'       # TXT输出路径

extract_text_from_image_and_save_to_txt(image_path, output_txt)

注意: 

1、此处注意路径为安装路径,后面是exe文件

# 设置Tesseract路径(确保已安装Tesseract OCR并设置正确路径)
pytesseract.pytesseract.tesseract_cmd = r'D:\img_ocr\tesseract.exe'

2、此处注意图片名字和格式不要写错

# 示例调用
image_path = '12345.png'  # 替换为你的图片路径
output_txt = 'output2.txt'       # TXT输出路径

七、测试脚本

测试图片:12345.png

脚本运行结果:

 测试结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/938387.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件集成测试内容和作用简析

在现代软件开发过程中,软件集成测试作为关键的一环,日益受到重视。特别是随着信息技术的快速发展,各类软件系统日益庞大复杂,如何确保系统不同模块的顺畅合作,成为了每个项目成功的重要基础。集成测试是指在软件开发过…

23. 合并 K 个升序链表(java)

题目描述: 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释&#xff…

Vscode搭建C语言多文件开发环境

一、文章内容简介 本文介绍了 “Vscode搭建C语言多文件开发环境”需要用到的软件,以及vscode必备插件,最后多文件编译时tasks.json文件和launch.json文件的配置。即目录顺序。由于内容较多,建议大家在阅读时使用电脑阅读,按照目录…

解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题

解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题 背景介绍 在对 golang 开发的 图像生成网站 进行并发测试时,调用基于 Instruct-pix2pix 模型和 FastAPI 的图像生成 API 遇到了以下错误: Model inference er…

ARM Linux 虚拟环境搭建

一、目标 在没有arm硬件的情况下,使用QEMU模拟器,在PC上模拟一块ARM开发板,对ARM Linux进行学习。 二、搭建步骤 首先先有一个Linux 开发环境,我目前使用的是Ubuntu20. 首先安装qemu,qemu的官网:https:…

百度2020校招Web前端工程师笔试卷(第二批)

百度2020校招Web前端工程师笔试卷(第二批) 2024/12/17 1.FIFO为先进先出的顺序来完成页面的访问,而如果在采用先进先出页面淘汰算法的系统中,一进程在内存占3块(开始为空),页面访问序列为1、2、…

java--抽象类(abstract)和接口(interface)

一.抽象类(abstract) 1.概念: 当父类中的一些方法不能确定实现的具体功能时,可以用abstract关键字来修饰该方法,此时,该方法就是抽象方法,该方法不需要实现方法体.可由其子类实现父类的抽象方法, abstruct不能用来修饰属性, 用abstract修饰的类叫做抽象类 // 抽象类&#x…

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 1.0 项目介绍 开发工具:IDEA、VScode 服务器:Tomcat, JDK 17 项目构建:maven 数据库:mysql 8.0 系统用户前台和管理…

Qt之修改窗口标题、图标以及自定义标题栏(九)

Qt开发 系列文章 - titles-icons-titlebars(九) 目录 前言 一、修改标题 二、添加图标 三、更换标题栏 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 在我们利用Qt设计软件时,经常需要修改窗口标题、更改软…

JumpServer开源堡垒机搭建及使用

目录 一,产品介绍 二,功能介绍 三,系统架构 3.1 应用架构 3.2 组件说明 3.3 逻辑架构 3.3 逻辑架构 四,linux单机部署及方式选择 4.1 操作系统要求(JumpServer-v3系列版本) 4.1.1 数据库 4.1.3创建数据库参考 4.2 在线安装 4.2.1 环境访问 4.3 基于docker容…

Pytorch | 从零构建GoogleNet对CIFAR10进行分类

Pytorch | 从零构建Vgg对CIFAR10进行分类 CIFAR10数据集GoogleNet网络结构特点网络整体架构特征图尺寸变化应用与影响 GoogleNet结构代码详解结构代码代码详解Inception 类初始化方法前向传播 forward GoogleNet 类初始化方法前向传播 forward 训练和测试训练代码train.py测试代…

简单了解一下 Go 语言的构建约束?

​构建约束是一种在 Go 语言中控制源文件编译条件的方法,它可以让您指定某些文件只在特定的操作系统、架构、编译器或 Go 版本下编译,而在其他环境中自动忽略。这样可以方便您针对不同的平台或场景编写不同的代码,实现条件编译的功能。 构建…

12.17双向链表,循环链表

循环单向链表 1.头文件test.h #ifndef __TEST_H_ #define __TEST_H_#include<stdio.h> #include<stdlib.h>typedef struct node {union{int len;int data;};struct node *next; }looplink,*looplinkPtr;//创建 looplinkPtr create();//判空 int empty(); //申请…

图的最小生成树(C++实现图【3】)

目录 1.最小生成树 1.1 Kruskal算法 代码部分 1.2 Prim算法 代码部分 1.最小生成树 连通图中的每一棵生成树&#xff0c;都是原图的一个极大无环子图&#xff0c;即&#xff1a;从其中删去任何一条边&#xff0c;生成树就不在连通&#xff1b;反之&#xff0c;在其中引入任何一…

解决电脑网速慢问题:硬件检查与软件设置指南

电脑网速慢是许多用户在使用过程中常见的问题&#xff0c;它不仅会降低工作效率&#xff0c;还可能影响娱乐体验。导致电脑网速慢的原因多种多样&#xff0c;包括硬件问题、软件设置和网络环境等。本文将从不同角度分析这些原因&#xff0c;并提供提高电脑网速的方法。 一、检查…

Python-基于Pygame的小游戏(贪吃蛇)(一)

前言:贪吃蛇是一款经典的电子游戏&#xff0c;最早可以追溯到1976年的街机游戏Blockade。随着诺基亚手机的普及&#xff0c;贪吃蛇游戏在1990年代变得广为人知。它是一款休闲益智类游戏&#xff0c;适合所有年龄段的玩家&#xff0c;其最初为单机模式&#xff0c;后来随着技术发…

MySQL表的增删改查(2)

1.数据库约束 1)约束类型 not null指定某列不能存储null值unique保证某列的每一行必须有唯一值default规定没有给列赋值时的默认值primary keynot null和unique的结合,一张表里只能有一个,作为身份标识的数据foreign key保证一个表的数据匹配另一个表中的值的参照完整性check…

职场人如何提升职业技能?

职场人如何提升职业技能&#xff1f; 在职场中&#xff0c;每个人都像是一名航行在广阔大海上的水手&#xff0c;面对着不断变化的风浪和挑战。要想在这片职场海洋中稳步前行&#xff0c;甚至脱颖而出&#xff0c;提升职业技能是必不可少的。那么&#xff0c;职场人究竟该如何…

IVE Model 2.0.2运行报错:Error launching application × could not locate Java runtime

在windows电脑上运行IVE Model 2.0.2程序的时候弹窗报错: could not locate Java runtime 一、原因分析 第一次安装的时候,很确定自己的JDK环境安装是没有问题,但是运行仍然会报错,由于软件没有说明使用什么版本的JDK只能挨个尝试,换了几个版本仍然不行,忽然想到,这个软…

模型训练篇 | 关于常见的10种数据标注工具介绍

前言:Hello大家好,我是小哥谈。数据标注工具是一种用于标记和分类数字图像、音频、视频或文本等数据集的工具。数据标注工具可以自动或手动标记数据集中的对象、人脸、物体、文字等,以便机器学习模型能够理解和识别这些数据。数据标注工具通常由开发者或数据标注团队开发和使…