跳過到頁腳內容
OCR 工具

Easyocr vs 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 辨識影像

以下是一個範例 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 上打游戏或重看《The Last of Us》。