跳至页脚内容
OCR 工具

Easyocr 与 Tesseract(OCR 功能比较)

光学字符识别 (OCR) 技术能够将扫描的纸质文档、PDF 文件或相机拍摄的高分辨率图像等文档处理成可打印和可搜索的数据。 通过识别提取的文本特征和形态操作, OCR可以自动输入数据,从而加快信息处理过程并提高准确性。

OCR 扫描文档,识别字符(例如字母、数字或符号),并将其转换为机器可读格式。 其用途包括书籍数字化、表格处理、文档工作流程自动化以及提高盲人无障碍访问能力。 随着深度学习和人工智能的发展,OCR引擎在识别复杂格式、多语言文档,甚至是质量较差的图像方面变得非常准确。

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

EasyOCR

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

EasyOCR 以其强大的文本识别能力而闻名,尤其擅长识别多行文本和低质量图像。 因此,它适用于实际应用场景,仅依赖于少数几个依赖项。 它体积小巧,在现代硬件上无需GPU即可高效运行,因此对于需要灵活OCR功能的开发人员来说非常有吸引力。

EasyOCR 的功能

EasyOCR 具备以下几个特点,使其成为一款全面而强大的 OCR 工具:

-可识别 80 多种语言: EasyOCR 可以阅读中文、日语、韩语、阿拉伯语、拉丁语系语言以及更多其他语言,包括复杂的词汇和语言。

-基于深度学习的高级识别:它支持高性能、高精度的高级深度学习技术,尤其是在噪声较大或失真的文本布局和图像中。

-简单 API:此易于使用的 API 使用户无需进一步配置即可在应用程序中快速获得 OCR 功能。

-多行文本检测:它可以识别多行文本,这对于文档、书籍或多行标牌非常有用。

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

-图像预处理:提供基本的图像预处理工具,用于清理噪声较大或分辨率较低的图像的 OCR 输出。

-灵活部署:可在各种平台上运行,并且相对容易嵌入到 Python 应用程序中。

安装

EasyOCR 可以使用 Python 的包管理器 pip 进行安装。 请先确保所有依赖项都已满足。必要的依赖项包括 PyTorch 库: torchtorchvision 。 这些软件可以与 EasyOCR 一起安装:

安装 EasyOCR:打开终端或命令行,然后输入以下命令:

pip install easyocr
pip install easyocr
SHELL

如果尚未安装 PyTorch,请安装(EasyOCR 需要此组件): EasyOCR 运行在 PyTorch 上。 如果您的环境中未自动安装 PyTorch,请按照官方 PyTorch 安装指南进行操作。

安装完成后,您就可以使用 EasyOCR 进行文本提取任务了。

使用 EasyOCR 识别 OCR 图像

以下是一个示例 Python 代码,演示如何使用 EasyOCR 对图像执行 OCR 操作:

import easyocr
import matplotlib.pyplot as plt
import cv2

# Initialize the EasyOCR reader with the English language specified
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 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()
import easyocr
import matplotlib.pyplot as plt
import cv2

# Initialize the EasyOCR reader with the English language specified
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 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是最流行的开源光学字符识别引擎之一,支持多种超参数选项以进行自定义。 可以通过使用 pytesseract 的 Python 应用程序访问它。 Tesseract 的开发最初由惠普公司发起,后来由谷歌公司进行了改进。 它功能非常全面,能够从图像和 PDF 文件中提取 100 多种语言的文本。 Python 封装器允许通过 pytesseract 与 Tesseract 进行无缝交互。

EasyOCR 与 Tesseract(OCR 功能对比):图 4 - Tesseract

Tesseract 因其能够检测和提取机器打印文本而闻名。 它提供多语言识别功能,支持新字体训练,并执行文本布局分析。 Tesseract 被广泛用于文档数字化、收据扫描、数据自动输入和生成可搜索的 PDF 文件。 在 Python 中,Tesseract 为从事 OCR 相关任务的开发人员提供了一个强大的组合。

超立方体 OCR 的特点

pytesseract 的显著特征包括:

-多语言支持: Tesseract 可以读取 100 多种语言,而 pytesseract 则可在 Python 脚本中轻松实现多语言 OCR 支持。它还允许训练识别其他自定义字体和语言,从而扩展其功能。

-图像转文本: Pytesseract 可以从 PNG、JPEG、BMP、GIF 和 TIFF 等各种图像格式中提取文本内容,从而实现对各种来源的 OCR。

-将 PDF 转换为可搜索的 PDF: Tesseract 读取 PDF 文件中的文本并将其转换为可搜索的格式,使用户能够对扫描文档的内容进行索引。

-复杂文本布局识别:能够读取复杂的布局,包括多列文档和表格,更准确地从非标准格式中提取文本。

-自定义配置:用户可以通过 pytesseract 传递自定义 Tesseract 配置参数,使用适当的识别模式或图像属性来微调 OCR 性能。

-简单的 API: pytesseract 中的简单 API 使开发人员能够轻松地将 OCR 添加到 Python 项目中,只需编写最少的代码即可进行交互。

该库可以与其他库(如 OpenCV、PIL(Python Imaging Library)或 NumPy)配合使用,进行图像预处理,以提高 OCR 的准确性。

安装

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

pip install pytesseract
pip install pytesseract
SHELL

EasyOCR 与 Tesseract(OCR 功能对比):图 5 - pytesseract

使用 Pytesseract 进行 OCR 图像识别

以下是一个使用 pytesseract 对图像进行 OCR 的 Python 代码示例:

import pytesseract
from PIL import Image

# Set the path to the Tesseract executable
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'

# Open the image and perform OCR
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)

# Print the extracted text
print(text)
import pytesseract
from PIL import Image

# Set the path to the Tesseract executable
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'

# Open the image and perform OCR
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)

# Print the extracted text
print(text)
PYTHON

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

EasyOCR 与 Tesseract(OCR 功能对比):图 6 - Tesseract 输出

IronOCR。

IronOCR 是一个功能强大的光学字符识别库,它允许 .NET 开发人员利用IronOCR从图像、PDF 和其他文档格式中高效地提取文本。 先进的算法即使对于复杂的布局或多语言环境也能提供高精度,支持 JPEG、PNG、GIF 和 TIFF 格式。 该库提供可配置的设置,能够通过图像分辨率或文本方向等参数对 OCR 引擎过程进行微调。

图像预处理功能可确保更高质量的输入图像,从而提高识别准确率,并进一步将输出文档转换为可搜索的 PDF 格式,以便更轻松地检索信息。 IronOCR 可无缝集成到 Web 应用程序中,对于希望在各个领域实施可靠的文本提取和文档数字化解决方案的开发人员来说,它是一个强有力的选择。

IronOCR。的特点

-高精度:采用先进的算法,无论文档复杂程度或字体使用情况如何,都能提供高精度的文本识别。

-支持多种格式:除了 PDF 格式外,还接受 JPEG、PNG、GIF 和 TIFF 等图像格式,以实现跨应用的通用性。

-多语言识别:支持多语言 OCR,在各种语言环境下都能产生准确的结果。

-文本布局保留:保持原始文档布局,确保提取的文本保留其格式化结构。

-可配置的 OCR:提供图像分辨率、文本方向等可配置参数,使开发人员能够针对特定图像优化 OCR 性能。

-图像预处理:包含用于增强图像的基本工具,例如去噪、对比度调整和调整大小,以提高 OCR 准确性。

-可搜索 PDF 转换:将扫描的图像和文档直接转换为可搜索的 PDF,以便高效地进行数据管理和检索。

-易于集成:便于直接集成到 .NET 应用程序中,使用户能够轻松添加 OCR 功能。

-批量处理:支持同时处理多个图像或文档,适用于处理大量数据。

安装

要安装 IronOCR,请在 Visual Studio 中打开 NuGet 包管理器,新建一个项目,搜索"IronOCR",选择最新版本,然后单击"安装"。

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

使用 IronOCR 的示例代码

以下 C# 代码演示了如何使用 IronOCR 进行 OCR 处理:

using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add languages to the OCR engine
        Ocr.Language = OcrLanguage.English;

        // Define the path to the input image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            var result = Ocr.Read(input);

            // Display the extracted text
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add languages to the OCR engine
        Ocr.Language = OcrLanguage.English;

        // Define the path to the input image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            var result = Ocr.Read(input);

            // Display the extracted text
            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 languages to the OCR engine
		Ocr.Language = OcrLanguage.English

		' Define the path to the input image
		Dim inputFile = "path\to\your\image.png"

		' Read the image and perform OCR
		Using input = New OcrInput(inputFile)
			Dim result = Ocr.Read(input)

			' Display the extracted text
			Console.WriteLine("Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

比较评估

高精度

与 Tesseract 或 EasyOCR 相比,IronOCR 在处理复杂布局、噪声图像和低分辨率文本时,其准确性尤为突出。 其内置的图像预处理工具,如降噪和对比度调整,有助于在实际应用中实现高精度。

多格式和布局保留

IronOCR 擅长处理各种图像格式、PDF 文件和多列布局,同时保留原始文档结构和格式。 它非常适合那些布局保留至关重要的项目。

它能够直接将图像和扫描文档转换为完全可搜索的 PDF,而无需依赖其他工具或库,这使其比 Tesseract 和 EasyOCR 更具优势。

IronOCR。提供先进的预处理

即使是质量较差的图像,使用 IronOCR 的高级预处理功能也能实现较高的 OCR 准确率,从而减少了对 OpenCV 等其他库的需求,使其成为文本提取的综合解决方案。

可扩展性和性能

IronOCR 针对高速、资源高效的 OCR 进行了优化,支持大型文档处理任务的可扩展性,这对于企业应用程序来说至关重要。

支持和更新

凭借商业支持,IronOCR 可享受定期更新、错误修复和专门协助,提供长期可靠性和 OCR 的最新进展,这与 Tesseract 和 EasyOCR 等开源选项不同。

结论

在众多重要的 OCR 库中,IronOCR 以其卓越的准确性、易于集成、预处理功能以及创建可搜索 PDF 而脱颖而出。 它能够巧妙地处理复杂的布局和嘈杂的图像,同时保持文档结构,并且开箱即用地支持多种语言。 这些特性使其优于 Tesseract 和 EasyOCR 等开源解决方案。

IronOCR 与 .NET 和 Python 无缝集成,为在各种项目中寻求高质量 OCR 的开发人员提供了一个全面的软件包。 鉴于其卓越的性能、可扩展性和商业支持,IronOCR 非常适合大规模和小规模的文档数字化项目,可提供可靠高效的文本识别。

要了解有关 IronOCR 及其功能的更多信息,您可以访问文档页面。 有关 Iron Software 产品的更多详细信息,请参阅库套件页面

Kannaopat Udonpant
软件工程师
在成为软件工程师之前,Kannapat 在日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了车辆机器人实验室的成员,隶属于生物生产工程系。2022 年,他利用自己的 C# 技能加入 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他可以直接从编写大多数 IronPDF 代码的开发者那里学习。除了同行学习外,Kannapat 还喜欢在 Iron Software 工作的社交方面。不撰写代码或文档时,Kannapat 通常可以在他的 PS5 上玩游戏或重温《最后生还者》。