OCR工具

Easyocr 与 Tesseract(OCR 功能比较)

Kannaopat Udonpant
坎那帕·乌东攀
2024年十二月15日
分享:

介绍

光学字符识别(OCR)是一种技术,可以将扫描的纸质文件、PDF 文件或通过相机捕获的高分辨率图像等文档处理为可打印和可搜索的数据。 提取文本特征的识别和形态操作允许OCR自动化数据输入,这加快了信息处理过程并提高其准确性。

OCR 扫描文档,识别字母、数字或符号等字符,并将其翻译成机器可读的格式。 其用途包括图书数字化、表单处理、文档工作流程自动化以及改善盲人的无障碍环境。 随着深度学习和人工智能的发展,OCR引擎在识别复杂格式、多语言文档,甚至是低质量图像方面变得非常准确。

常用的 OCR 工具和库,如 EasyOCR、Tesseract OCR、Keras-OCR 和 IronOCR,通常用于将此功能集成到现代应用程序中。

EasyOCR

EasyOCR 是一个开源的 Python 库,旨在使从图像中提取文本变得简单高效。 它使用深度学习技术,支持 80 多种语言,包括拉丁语、中文、阿拉伯语和其他许多语言。 EasyOCR Tesseract 的 API 非常简单,任何人都可以轻松地将 OCR 预测功能集成到自己的应用程序中,无需过多设置。有了 EasyOCR Tesseract,人们可以进行简单的文档数字化、车牌识别,甚至从图片中提取文本。

-->

EasyOCR以其文本识别而闻名。 大多数其他 OCR 解决方案都不提供此功能。 它还能处理多行文本,并适用于任何类型的图片,即使是低质量的图片。 因此,译文必须适合现实世界的使用情况,只依赖于少数几个依赖项。 它是轻量级的,无需 GPU 即可在现代硬件上高效运行。 这使得 EasyOCR 对可能需要灵活 OCR 功能的开发人员颇具吸引力。

EasyOCR 的功能

EasyOCR 拥有大量功能,是一款功能全面、真正强大的 OCR 工具:

识别80多种语言:EasyOCR能够读取中文、日文、韩文、阿拉伯文、拉丁语系语言以及许多其他复杂词汇和复杂语言。

它将识别图像中的文本,从而进一步扩大潜在应用的范围。

高级深度学习基础:识别支持高级深度学习技术的强大算法,具有高性能和高精度,特别是在嘈杂或扭曲的文本布局和图像中。

简单的API:非常容易实现,具有易于使用的API,让用户无需进一步配置即可快速在应用程序中获得OCR功能。

多行文本检测:识别多行文本; 适用于文档、书籍或多行标志。

轻量级:它在 CPU 上运行良好,并且可以利用 GPU 以提高性能,但仍然可以在基本硬件上运行。

图像预处理: 提供主要图像预处理工具,用于清理来自噪声或低分辨率图像的OCR输出。

灵活的部署:适用于多个平台,在嵌入Python应用程序中相对轻松。

安装

可以通过 Python 的软件包管理器 pip 安装 EasyOCR。 首先,确保满足所有的依赖关系。

首先是 PyTorch 库:torch 和 torchvision。 Torch 和 torchvision 可与 EasyOCR 一起安装:

安装 EasyOCR: 要安装它,只需打开终端或命令行并输入以下命令:

pip install easyocr
-->

如果尚未安装,请安装 PyTorch(EasyOCR 需要): EasyOCR 运行在 PyTorch 上。 如果在您的环境中自动安装,请安装特定版本; 请遵循官方的PyTorch 安装指南

现在,您可以使用 EasyOCR 完成文本提取任务了。

使用 EasyOCR OCR 图像

import easyocr
import matplotlib.pyplot as plt
import cv2
# Initialize the EasyOCR reader
reader = easyocr.Reader(['en'])  # Specify the languages (e.g., 'en' for English)
# Load the image
image_path = 'sample_image.png'  # Path to the image
image = cv2.imread(image_path)
# Perform OCR on the image
result = reader.readtext(image_path)
# Print the detected text and its bounding boxes
for (bbox, text, prob) in result:
    print(f"Detected Text: {text} (Confidence: {prob:.4f})")
# Optionally, display the image with bounding boxes around the detected text
for (bbox, text, prob) in result:
    # Unpack the bounding box
    top_left, top_right, bottom_right, bottom_left = bbox
    top_left = tuple(map(int, top_left))
    bottom_right = tuple(map(int, bottom_right))
    # Draw a rectangle around the text
    cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)
# Convert the image to RGB (since OpenCV loads images in BGR by default)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Display the image with bounding boxes
plt.imshow(image_rgb)
plt.axis('off')
plt.show()
PYTHON

下图是上述代码生成的输出结果。

Easyocr 对比 Tesseract(OCR 功能比较):图 3 - EasyOCR 输出

Tesseract

Tesseract 是最受欢迎的开源光学字符识别引擎之一,提供多种超参数选项。 可使用 pytesseract 从 Python 应用程序中访问。 Tesseract 由惠普公司开始开发,后来由谷歌进行了改进。 它具有很强的通用性,可以提取 100 多种语言的图像和 PDF 中的文本。 Python 包装器允许通过 pytesseract 与 Tesseract 进行无缝交互。

Easyocr 与 Tesseract(OCR 功能比较):图4 - Tesseract

Tesseract 是机器印刷和文本检测与提取领域的领导者,具有多语言识别能力,支持新字体训练,还能进行文本布局分析。 Tesseract 在文档数字化、扫描收据、自动数据录入和实现可搜索 PDF 中得到了广泛应用。 对于从事 OCR 相关任务的开发人员来说,Python 和 Tesseract 的灵活性是一个相当强大的组合。

Tesseract OCR 的特点

pytesseract 的一些最重要的功能包括

多语言支持:Tesseract 可以读取超过 100 种语言,而 pytesseract 在 Python 脚本中具有相当简单的多语言 OCR 支持。它还支持额外的自定义字体或语言的训练,从而将功能扩展到更多语言或字体。

用于图像到文本转换:pytesseract 从多种格式的图像中提取文本内容,如PNG、JPEG、BMP、GIF和TIFF,以在许多不同类型的来源上运行OCR。

从 PDF 转换为可搜索的 PDF: Tesseract 将读取 PDF 文件的文本并使该 PDF 可搜索。 用户可以查找扫描文件的内容并编制索引。

它可以阅读复杂的文本布局,包括多栏文档、表格以及文本和图片的混合内容。 因此,它可以更准确地从非标准布局中提取文本。

自定义配置:用户可以通过 pytesseract 传递自定义的 Tesseract 配置参数,以便通过适当的识别模式或图像来微调 OCR 性能,从而根据需要为文本提供特定属性。

简单的 API: 它是一个基于 pytesseract 的简单 API,因此开发人员可以通过更少的代码与其交互,将 OCR 添加到他们的 Python 项目中。

该库可以很好地与其他库一起使用,如OpenCV、PIL(Python Imaging Library)或NumPy,以处理图像预处理,从而提高OCR的准确性。

安装

安装 Tesseract 后,使用 pip 安装 pytesseract 软件包:

pip install pytesseract

Easyocr vs Tesseract(OCR 功能对比):图 5 - pytesseract

使用 pytesseract 对图像进行 OCR 识别

import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example: Read text from an image
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)
print(text)
PYTHON

以下是从上述代码生成的输出。

Easyocr vs Tesseract(OCR功能对比):图6 - Tesseract输出

IronOCR

一个强大的光学字符识别库让.NET开发者利用IronOCR的强大功能,从图像、PDF和更多文档格式中高效提取文本。 即使在复杂的布局或多语言环境中,先进的算法也能确保极高的准确性。 支持 JPEG、PNG、GIF 和 TIFF 格式。 该库提供可变设置,可通过图像分辨率或文本方向等参数对 OCR 引擎过程进行微调。

图像预处理功能可确保将质量更好的输入图像翻译成识别准确率更高的文件,并进一步将输出文件转换为可搜索的 PDF 文件,以方便信息检索。 因此,考虑到如此容易集成到网络应用程序中,IronOCR 是希望为多个领域实施最值得信赖的文本提取和文档数字化解决方案的开发人员的最佳工具。

IronOCR 的功能

高精度: 它使用复杂的高级算法,在识别文本时提供高水平的准确性,无论文档的复杂程度或使用的字体如何。

接受多种格式:它接受JPEG、PNG、GIF和TIFF等图像格式以及PDF,以确保能够在各种应用中执行预期功能。

支持多语言识别: 它是多语言支持的,在各种语言环境中提供准确的文本提取结果。

文本布局保留: 这将保留文档的原始布局,从而使提取的文本具有相同的布局,对于清晰的可读性至关重要。

可配置的OCR:它提供了图像分辨率、文本方向等可配置参数,使开发人员能够在一定程度上优化特定图像的OCR工具。

图像预处理: 它配备了一些基本工具,旨在增强图像,包括去除噪声、调整对比度以及调整大小,所有这些都是为了提高OCR的准确性。

可搜索 PDF:扫描的图像和文档可以直接转换为可搜索的 PDF,以实现高效的数据管理和检索。

轻松集成:它允许轻松集成到.NET中,从而使用户可以很容易地添加OCR功能。

批量处理:它对同时处理多个图像或文档非常有用。 它在处理大量数据时非常有用。

安装

安装非常简单:打开 NuGet Package Manager for Solutions 并启动一个新的 Visual Studio 项目。 只需输入 "IronOCR",然后查找列表。然后,选择 IronOCR 的最新版本,点击安装。

Easyocr 与 Tesseract(OCR 功能对比):图 7 - 安装法语语言包

使用 IronOCR 的示例代码

using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();
        // Add multiple languages
        Ocr.Language = OcrLanguage.English;
        // Path to the image
        var inputFile = @"path\to\your\image.png";
        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            // Perform OCR
            var result = Ocr.Read(input);
            // Display the result
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();
        // Add multiple languages
        Ocr.Language = OcrLanguage.English;
        // Path to the image
        var inputFile = @"path\to\your\image.png";
        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            // Perform OCR
            var result = Ocr.Read(input);
            // Display the result
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
Imports IronOcr
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize IronTesseract engine
		Dim Ocr = New IronTesseract()
		' Add multiple languages
		Ocr.Language = OcrLanguage.English
		' Path to the image
		Dim inputFile = "path\to\your\image.png"
		' Read the image and perform OCR
		Using input = New OcrInput(inputFile)
			' Perform OCR
			Dim result = Ocr.Read(input)
			' Display the result
			Console.WriteLine("Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

比较评估

高准确性

与最接近的竞争对手 Tesseract 或 EasyOCR 相比,IronOCR 在处理复杂布局、嘈杂图像和低分辨率文本时更加准确。 内置的图像预处理工具,如降噪和对比度调整,都提高了在实际应用中实现准确性的可能性。

多格式和版式保护

IronOCR 在此方面的表现优于两者,因为它可以在保留原始文档结构和格式的前提下,轻松处理任何类型的图片格式、PDF 文件和多栏布局。 因此,在更传统的数字化项目中,它最终会成为最好的翻译,因为在这些项目中,版面保存是一项资产。

它的一个巨大优势是可以将图像和扫描文件直接转换为完全可搜索的 PDF,而无需依赖额外的工具或库,Tesseract 和 EasyOCR 就是这样。

IronOCR 提供先进的预处理功能

使用该功能,即使是质量最差的图像也能产生很高的 OCR 识别准确率。 这样可以最大限度地减少对 OpenCV 等其他库的依赖,从而使其成为高质量文本提取的一站式商店。

可扩展性和性能

IronOCR 针对高速、资源节约型 OCR 进行了优化,可确保大型文档处理工作的可扩展性--这是任何企业应用程序的首要任务。

支持和更新

IronOCR 提供商业支持,这可以积极地转化为实际更新和错误修复的增加,以及长期的专门协助,从而为 OCR 的长期可靠性和最新进展提供保证,而这正是 Tesseract 和 EasyOCR 等开源竞争对手所缺乏的。

结论

在最重要的 OCR 库中,IronOCR 凭借其卓越的准确性和易于集成的特点成为最佳选择,更不用说预处理图像和创建可搜索 PDF 等其他功能了。 与 Tesseract 和 EasyOCR 等开源解决方案相比,它可以精确处理复杂的布局和噪声较大的图像,并保持文档结构的完整性,开箱即支持多种语言。

其中包含的工具以及与 .NET 和 Python 的无缝集成确保了这是一款包罗万象的软件包,适合希望将高质量 OCR 集成到任何类型项目中的开发人员使用。 此外,它还具有良好的性能、可扩展性和商业支持,可用于一些小型和大型文档数字化工作,因此是可靠、高效文本识别的最终选择。

要了解有关IronOCR及其工作原理的更多信息,您可以访问此文档页面,IronOCR提供免费试用。 要了解更多关于Iron Software产品的信息,请参阅软件库页面

Kannaopat Udonpant
坎那帕·乌东攀
软件工程师
在成为软件工程师之前,Kannapat 从日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了生物生产工程系车辆机器人实验室的成员。2022年,他利用自己的 C# 技能加入了 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他能直接向编写 IronPDF 大部分代码的开发者学习。除了同伴学习,Kannapat 还享受在 Iron Software 工作的社交方面。不写代码或文档时,Kannapat 通常在 PS5 上玩游戏或重看《最后生还者》。
< 前一页
Power Automate OCR(开发人员教程)
下一步 >
如何将图片转换为文本