光学字符识别 (OCR) 是一种强大的技术,可将文本图像转换为机器可读的内容。随着数据提取自动化的需求日益增长,OCR 工具已成为许多应用程序的重要组成部分,从数字化文档到从扫描图像中提取信息。在本教程中,我们将构建一个在 Google Colab 上轻松运行的 OCR 应用程序,利用 OpenCV 进行图像处理、Tesseract-OCR 进行文本识别、NumPy 进行数组操作和 Matplotlib 进行可视化等工具。在本指南结束时,您可以上传图像、对其进行预处理、提取文本并下载结果,所有这些都在 Colab Notebook中完成。
!apt-get install -y tesseract-ocr
!pip install pytesseract opencv-python numpy matplotlib
要在 Google Colab 中设置 OCR 环境,我们首先使用 apt-get 安装开源文本识别引擎 Tesseract-OCR。此外,我们还要安装必要的 Python 库,例如 pytesseract(用于与 Tesseract 交互)、OpenCV(用于图像处理)、NumPy(用于数值运算)和 Matplotlib(用于可视化)。
import cv2
import pytesseract
import numpy as np
import matplotlib.pyplot as plt
from google.colab import files
from PIL import Image
接下来,我们导入图像处理和 OCR 任务所需的库。OpenCV (cv2) 用于读取和预处理图像,而 pytesseract 为 Tesseract OCR 引擎提供了用于文本提取的接口。NumPy (np) 有助于数组操作,Matplotlib (plt) 可视化处理后的图像。Google Colab 的文件模块允许用户上传图像,PIL (Image) 有助于进行 OCR 处理所需的图像转换。
uploaded = files.upload()
filename = list(uploaded.keys())[0]
要处理用于 OCR 的图像,我们首先需要将其上传到 Google Colab。Google Colab 的文件模块中的 files.upload() 函数使用户可以从本地系统选择并上传图像文件。上传的文件存储在字典中,文件名作为键。我们使用 list(uploaded.keys())[0] 提取文件名,这使我们能够在后续步骤中访问和处理上传的图像。
def preprocess_image(image_path):
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
return thresh
processed_image = preprocess_image(filename)
plt.imshow(processed_image, cmap='gray')
plt.axis('off')
plt.show()
为了提高 OCR 准确率,我们应用了一个预处理函数来提高文本提取的图像质量。preprocess_image() 函数首先使用 OpenCV (cv2.imread()) 读取上传的图像,然后使用 cv2.cvtColor() 将其转换为灰度图像,因为灰度图像对 OCR 更有效。接下来,我们使用 cv2.threshold() 应用 Otsu 方法的二值阈值,它通过将图像转换为高对比度的黑白格式来帮助区分文本和背景。最后,使用 Matplotlib (plt.imshow()) 显示处理后的图像。
def extract_text(image):
pil_image = Image.fromarray(image)
text = pytesseract.image_to_string(pil_image)
return text
extracted_text = extract_text(processed_image)
print("Extracted Text:")
print(extracted_text)
extract_text() 函数对预处理后的图像执行 OCR。由于 Tesseract-OCR 需要 PIL 图像格式,我们首先使用 Image.fromarray(image) 将 NumPy 数组(处理后的图像)转换为 PIL 图像。然后,我们将此图像传递给 pytesseract.image_to_string(),它提取并返回检测到的文本。最后,打印提取的文本,展示上传图像的 OCR 结果。
with open("extracted_text.txt", "w") as f:
f.write(extracted_text)
files.download("extracted_text.txt")
为了确保提取的文本易于访问,我们使用 Python 的内置文件处理功能将其保存为文本文件。 open(“extracted_text.txt”, “w”) 命令创建(或覆盖)一个文本文件并将提取的 OCR 输出写入其中。保存文件后,我们使用 files.download(“extracted_text.txt”) 提供自动下载链接。
总之,通过集成 OpenCV、Tesseract-OCR、NumPy 和 Matplotlib,我们成功构建了一个可以在 Google Colab 中处理图像和提取文本的 OCR 应用程序。此工作流程提供了一种简单而有效的方法,可将扫描的文档、打印的文本或手写内容转换为数字文本格式。预处理步骤可确保更高的准确性,并且保存和下载结果的能力使进一步分析变得方便。
作者:Asif Razzaq
源自marktechpost
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/56726.html