您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

如何使用Python中的OCR技术将图像中的文本提取为可编辑文件?

时间:2023-05-18 16:09:25  来源:今日头条  作者:你的老师父

Python/ target=_blank class=infotextkey>Python中,可以使用多种库和工具来识别图片中的文本。其中,比较常用的是Tesseract OCR和Pytesseract库。下面将介绍如何使用Python和Pytesseract库来识别图片中的文本,并将其整理成word、txt和markdown格式的文件。

1. 安装和配置Pytesseract库

Pytesseract是Python的一个OCR库,它是Tesseract OCR引擎的Python封装。在使用Pytesseract之前,需要先安装Tesseract OCR引擎和Pytesseract库。可以使用以下命令在linux系统中安装Tesseract OCR和Pytesseract库:

sudo apt-get install tesseract-ocr
sudo apt-get install libtesseract-dev
pip install pytesseract

windows系统中,可以从Tesseract OCR的官方网站
https://Github.com/UB-Mannheim/tesseract/wiki)下载安装包,然后使用以下命令安装Pytesseract库:

pip install pytesseract

2. 识别图片中的文本

使用Pytesseract库识别图片中的文本非常简单。首先,需要导入pytesseract模块和PIL模块(用于打开和处理图片)。然后,可以使用
pytesseract.image_to_string()函数来识别图片中的文本。以下是一个简单的示例:

import pytesseract
from PIL import Image

# 打开图片
img = Image.open('example.png')

# 识别图片中的文本
text = pytesseract.image_to_string(img, lang='eng')

# 打印识别的文本
print(text)

在上面的示例中,
pytesseract.image_to_string()函数接受两个参数:要识别的图片和语言选项。默认情况下,Pytesseract使用英语语言模型进行识别。如果需要识别其他语言,可以将lang参数设置为对应的语言代码。

3. 整理识别的文本

在将识别的文本整理成word、txt和markdown格式的文件之前,需要先对识别的文本进行处理和清洗,以确保输出的文件格式正确。以下是一些常用的文本处理和清洗操作:

  • 去除多余的空格和换行符
  • 将文本按照段落进行分割
  • 将文本按照句子进行分割
  • 删除无用的字符和标点符号
  • 将文本转换为小写字母(可选)
  • ...

下面是一个示例代码,将识别的文本整理成txt格式的文件:

import pytesseract
from PIL import Image

# 打开图片
img = Image.open('example.png')

# 识别图片中的文本
text = pytesseract.image_to_string(img, lang='eng')

# 去除多余的空格和换行符
text = ' '.join(text.split())
text = text.replace('n', ' ')

# 将文本按照段落进行分割
paragraphs = text.split('nn')

# 创建txt文件并写入文本
with open('example.txt', 'w') as f:
    for p in paragraphs:
        f.write(p + 'nn')

将识别的文本整理成word、markdown格式的文件也类似,只需要将输出格式从txt改为对应的格式,然后使用相应的库或工具来生成文件即可。

4. 完整代码

下面是一个完整的示例代码,将识别的文本整理成word、txt格式的文件:

import pytesseract
from PIL import Image
import docx
import os

# 打开图片
img = Image.open('example.png')

# 识别图片中的文本
text = pytesseract.image_to_string(img, lang='eng')

# 去除多余的空格和换行符
text = ' '.join(text.split())
text = text.replace('n', ' ')

# 将文本按照段落进行分割
paragraphs = text.split('nn')

# 将文本整理成word格式的文件
doc = docx.Document()
for p in paragraphs:
    doc.add_paragraph(p)
doc.save('example.docx')

# 将文本整理成txt格式的文件
with open('example.txt', 'w') as f:
    for p in paragraphs:
        f.write(p + 'nn')

# 打开生成的文件
os.system('start example.docx')
os.system('start example.txt')

在上面的代码中,使用了Python的docx库来生成word格式的文件。在生成文件之后,使用os模块打开文件。在Windows系统中,可以使用os.system()函数来打开文件。在其他操作系统中,可能需要使用其他方式来打开文件。



Tags:Python   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
在Python中,可以使用多种库和工具来识别图片中的文本。其中,比较常用的是Tesseract OCR和Pytesseract库。下面将介绍如何使用Python和Pytesseract库来识别图片中的文本,并将其...【详细内容】
2023-05-18  Tags: Python  点击:(0)  评论:(0)  加入收藏
在PyQt6中,应用程序类和窗口类是两个重要的概念。应用程序类是整个GUI应用程序的入口,它负责管理应用程序的生命周期和全局设置。而窗口类是GUI应用程序中的一个组成部分,它负...【详细内容】
2023-05-18  Tags: Python  点击:(2)  评论:(0)  加入收藏
PyQt6是一个Python的GUI编程库,其中事件处理器是处理交互事件的重要组成部分。本文将深入讲解PyQt6的事件处理器,包括如何注册和处理事件、事件的传递机制、事件过滤器以及一...【详细内容】
2023-05-17  Tags: Python  点击:(6)  评论:(0)  加入收藏
在Django中,模型实例是指通过模型类创建出来的一个具体的数据库记录。模型实例可以使用一系列的实例方法和属性,进行数据的增删改查,以及访问关联的对象。本文将深入讲解Django...【详细内容】
2023-05-17  Tags: Python  点击:(1)  评论:(0)  加入收藏
撰稿丨千山 在AI 领域,Python无疑是最流行的编程语言。而且从近年的TIOBE排行榜来看,这种地位一时还很难撼动。不过在编程语言界,后浪总是层出不穷,不停地向前浪发起冲击。 最近...【详细内容】
2023-05-15  Tags: Python  点击:(11)  评论:(0)  加入收藏
下面是Python wxPython的教程,主要包括wxPython的基本概念、窗口、组件、布局、事件处理和样式等方面的内容。 wxPython的基本概念wxPython是Python中的GUI编程库,用于创建图...【详细内容】
2023-05-15  Tags: Python  点击:(4)  评论:(0)  加入收藏
前言当我们的Python代码变得越来越复杂时,就可能会发现需要在函数中添加一些 额外的功能,例如 日志记录、性能测试、输入合法性检查 等等。这时候,使用Python装饰器就可以让我...【详细内容】
2023-05-14  Tags: Python  点击:(13)  评论:(0)  加入收藏
简介对于需要处理大量图片的工作,例如调整图片大小、裁剪图片等,手动处理是非常繁琐的。为了提高工作效率,我们可以使用Python编写脚本来自动化这些任务。在本文中,我们将介绍如...【详细内容】
2023-05-13  Tags: Python  点击:(11)  评论:(0)  加入收藏
你是否曾经遇到过需要从网络上获取大量图片的需求?你是否曾经为手动下载图片而感到疲惫?那么,本文将为你介绍一种高效、易用的方法——利用PHP和Python编写爬虫程序,...【详细内容】
2023-05-09  Tags: Python  点击:(16)  评论:(0)  加入收藏
本文介绍了栈这一数据结构,并介绍了在现实生活中的程序中如何使用它的情况。在文章的中,介绍了 Python 中实现栈的三种不同方式,知道了 对于非多线程程序是一个更好的选择,如果...【详细内容】
2023-05-08  Tags: Python  点击:(14)  评论:(0)  加入收藏
▌简易百科推荐
在Python中,可以使用多种库和工具来识别图片中的文本。其中,比较常用的是Tesseract OCR和Pytesseract库。下面将介绍如何使用Python和Pytesseract库来识别图片中的文本,并将其...【详细内容】
2023-05-18  你的老师父  今日头条  Tags:Python   点击:(0)  评论:(0)  加入收藏
在PyQt6中,应用程序类和窗口类是两个重要的概念。应用程序类是整个GUI应用程序的入口,它负责管理应用程序的生命周期和全局设置。而窗口类是GUI应用程序中的一个组成部分,它负...【详细内容】
2023-05-18  你的老师父    Tags:PyQt6   点击:(2)  评论:(0)  加入收藏
PyQt6是一个Python的GUI编程库,其中事件处理器是处理交互事件的重要组成部分。本文将深入讲解PyQt6的事件处理器,包括如何注册和处理事件、事件的传递机制、事件过滤器以及一...【详细内容】
2023-05-17  你的老师父  今日头条  Tags:PyQt6   点击:(6)  评论:(0)  加入收藏
在Django中,QuerySet是一种用于执行数据库查询的对象。它提供了一系列的方法和查询表达式,可以方便地执行复杂的数据库查询操作。本文将深入讲解Django中的QuerySet,包括如何执...【详细内容】
2023-05-17  你的老师父  今日头条  Tags:Django   点击:(1)  评论:(0)  加入收藏
在Django中,模型实例是指通过模型类创建出来的一个具体的数据库记录。模型实例可以使用一系列的实例方法和属性,进行数据的增删改查,以及访问关联的对象。本文将深入讲解Django...【详细内容】
2023-05-17  你的老师父  今日头条  Tags:Django   点击:(1)  评论:(0)  加入收藏
大家都知道,RocketMQ 消费模式有 PULL 模式和 PUSH 模式,不过本质上都是 PULL 模式,而在实际使用时,一般使用 PUSH 模式。不过,RocketMQ 的 PUSH 模式有明显的不足,主要体现在以下...【详细内容】
2023-05-16  君哥聊技术    Tags:RocketMQ   点击:(11)  评论:(0)  加入收藏
什么是pippip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。注:pip 已内置于 Python 3.4 和 2.7 及以上版本,其他版本需另行安...【详细内容】
2023-05-15  零一间  今日头条  Tags:pip   点击:(5)  评论:(0)  加入收藏
下面是Python wxPython的教程,主要包括wxPython的基本概念、窗口、组件、布局、事件处理和样式等方面的内容。 wxPython的基本概念wxPython是Python中的GUI编程库,用于创建图...【详细内容】
2023-05-15  你的老师父  今日头条  Tags:GUI程序   点击:(4)  评论:(0)  加入收藏
前言当我们的Python代码变得越来越复杂时,就可能会发现需要在函数中添加一些 额外的功能,例如 日志记录、性能测试、输入合法性检查 等等。这时候,使用Python装饰器就可以让我...【详细内容】
2023-05-14  程序员梓羽同学  今日头条  Tags:Python   点击:(13)  评论:(0)  加入收藏
简介对于需要处理大量图片的工作,例如调整图片大小、裁剪图片等,手动处理是非常繁琐的。为了提高工作效率,我们可以使用Python编写脚本来自动化这些任务。在本文中,我们将介绍如...【详细内容】
2023-05-13  诚哥博客  今日头条  Tags:Python脚本   点击:(11)  评论:(0)  加入收藏
站内最新
站内热门
站内头条