跳至頁尾內容
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應用中。

安裝

可以使用Python的套件管理器pip安裝EasyOCR。 首先確保滿足所有依賴項,主要的依賴項包括PyTorch程式庫:torchtorchvision。 這些可以和EasyOCR一起安裝:

安裝EasyOCR: 打開終端或命令行並輸入命令:

pip install easyocr
pip install easyocr
SHELL

安裝PyTorch(若未安裝,EasyOCR需要): EasyOCR運行於PyTorch之上。 如果您的環境中未自動安裝,請遵循官方PyTorch安裝指南

一旦安裝完成,您即可準備使用EasyOCR進行文字提取任務。

使用EasyOCR進行OCR圖片處理

以下是展示如何使用EasyOCR對圖片進行OCR的範例Python程式碼:

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

Tesseract 是最受歡迎的開源光學字元識別引擎之一,支持多種超參數選項以進行定制化。 可以從Python應用中直接使用pytesseract來存取它。 Tesseract的開發起初由惠普發起,後來由Google加以增強。 它具有高度的通用性,能夠從圖片和PDF中提取超過100種語言的文字。 Python包裝器允許通過pytesseract無縫地與Tesseract進行交互。

EasyOCR對比Tesseract(OCR功能比較):圖4 - Tesseract

Tesseract以其檢測和提取列印文字的能力而聞名。 它提供多語言識別功能,支持對新字體進行訓練,並執行文字佈局分析。 Tesseract廣泛用於文件數位化、收據掃描、自動化資料輸入以及可搜索PDF的啟用。 在Python中,Tesseract是開發OCR相關任務的強大組合。

Tesseract OCR的功能

pytesseract的顯著功能包括:

  • 多語言支持: Tesseract可以閱讀超過100種語言,pytesseract提供在Python腳本中輕鬆的多語言OCR支持,還允許對額外的定制化字體和語言進行訓練,擴展其能力。

  • 圖像轉文字: Pytesseract從各種圖像格式如PNG、JPEG、BMP、GIF和TIFF中提取文字內容,使OCR能夠在不同來源上執行。

  • 從PDF轉換為可搜索的PDF: Tesseract讀取PDF文件中的文字並將其轉換為可搜索的格式,允許使用者對掃描的文件內容進行索引。

  • 複雜文字布局識別: 它可以閱讀複雜的布局,包括多欄文件和表格,更準確地從非標準格式中提取文字。

  • 自定義配置: 使用者可以通過pytesseract傳遞自定義的Tesseract配置參數,以調整OCR性能,使用合適的識別模式或影像屬性。

  • 簡易API: Pytesseract的簡單API使開發者能夠在Python專案中輕鬆地新增OCR功能,並以最少的程式碼進行交互。

此程式庫與如OpenCV、PIL(Python影像程式庫)或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無縫整合到網路應用上,是開發者尋求跨各個領域實現可靠的文字提取和文件數位化解決方案的有力選擇。

IronOCR的功能

  • 高準確性: 使用先進算法提供高水平的文字識別準確性,無論文件複雜性或字體使用如何。

  • 多種格式支持: 接受包括JPEG、PNG、GIF和TIFF等圖像格式,以及PDF,以獲得跨應用的多用途性。

  • 多語言識別: 支援多語境的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等開源解決方案更具吸引力。

包括與.NET和Python的無縫整合,IronOCR作為一個全面的包,滿足開發者在各種專案中對高品質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。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話