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

开发 后端
在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('\n\n')

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

将识别的文本整理成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('\n\n')

# 将文本整理成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 + '\n\n')

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

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

责任编辑:姜华 来源: 今日头条
相关推荐

2020-02-04 17:31:49

Python 开发编程语言

2022-11-08 11:49:09

NLP库Python云服务

2023-10-30 15:16:59

Python库Python开发

2023-12-19 22:44:45

PythonPDFExcel

2024-09-09 00:00:00

2021-01-18 10:15:40

tee命令BashLinux

2024-12-03 09:59:00

2020-02-21 08:00:00

Pythonasyncio编程语言

2021-02-28 10:23:35

Python监控系统

2023-11-01 07:24:55

2020-02-07 08:00:00

ExifTool提取文件开源

2023-11-15 13:04:30

Python提取表格

2010-03-15 17:26:58

Python字典

2012-05-18 11:28:57

TitaniumCommunity W

2012-10-15 13:37:55

IBMdw

2023-11-13 18:37:44

2016-12-01 13:44:19

iosandroid

2020-12-14 22:42:32

Linux终端

2016-12-01 14:23:32

iosandroid

2019-09-26 06:50:16

Linux命令回车字符
点赞
收藏

51CTO技术栈公众号