이미지에서 텍스트 추출을 위한 상위 7개의 Python OCR 라이브러리

광학 문자 인식 (OCR)은 이미지, 스캔 문서 및 손으로 쓴 메모에서 읽을 수 있는 텍스트를 추출하는 기술입니다. 파이썬에서는 OCR 도구가 수년에 걸쳐 크게 발전하였으며, 최신 버전에서는 이러한 라이브러리가 더욱 강력하고 효율적인 솔루션을 제공합니다.

이 기사에서는 Python에서 가장 인기 있는 일곱 가지 OCR 라이브러리를 다루며, 각 라이브러리의 강점, 고유한 기능 및 시작하는 데 도움이 되는 코드 예제를 강조합니다.

1. Tesseract OCR (pytesseract)

Tesseract는 의심할 여지 없이 파이썬 생태계에서 가장 인기 있고 널리 사용되는 OCR 라이브러리입니다. 원래 HP에 의해 개발되었고 현재 Google에 의해 유지 관리되고 있는 Tesseract는 100개 이상의 언어에 대해 고품질 OCR 기능을 제공합니다.

주요 특징:

  • 오픈 소스이며 무료로 사용할 수 있습니다.
  • 비라틴 알파벳을 포함한 여러 언어를 지원합니다.
  • 이미지, 스캔 문서 및 PDF에서 텍스트를 인식합니다.
  • 특화된 사용 사례를 위해 사용자 정의 훈련 데이터로 커스터마이즈할 수 있습니다.
  • 정확성을 높이기 위해 OpenCV와 같은 전처리 도구와 잘 작동합니다.

리눅스에 Tesseract OCR을 설치하려면, 다음 단계 배포판에 따라 진행하세요:

sudo apt install tesseract-ocr     [On Debian, Ubuntu and Mint]
sudo yum install tesseract         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract  [On Gentoo Linux]
sudo apk add tesseract             [On Alpine Linux]
sudo pacman -S tesseract           [On Arch Linux]
sudo zypper install tesseract      [On OpenSUSE]    
sudo pkg install tesseract         [On FreeBSD]

한 번 Tesseract를 설치하면, Python과 함께 사용하려면 pytesseract 패키지를 pip 패키지 관리자를 사용하여 설치해야 합니다.

pip3 install pytesseract
OR
pip install pytesseract

다음은 Tesseract OCRpytesseract 라이브러리와 함께 사용하여 이미지에서 텍스트를 추출하는 예제 Python 코드입니다.

import pytesseract
from PIL import Image

# Load an image
img = Image.open("image_sample.png")

# Use Tesseract to extract text
text = pytesseract.image_to_string(img)

# Print the extracted text
print(text)

2. EasyOCR

EasyOCR은 80개 이상의 언어를 지원하며 초보자에게 사용하기 쉬운 또 다른 훌륭한 Python OCR 라이브러리입니다. 이는 심층 학습 기술을 기반으로 하여 현대 OCR 기술을 활용하고자 하는 사람들에게 훌륭한 선택입니다.

주요 특징:

  • 심층 학습 모델을 통한 높은 정확도.
  • 다양한 언어 지원.
  • 수직 및 다국어 이미지에서 텍스트 감지 가능.
  • 간단하고 이해하기 쉬운 API.

리눅스에 EasyOCR을 설치하려면, 배포판에 따라 다음 pip 명령을 사용할 수 있습니다.

pip3 install easyocr
OR
pip install easyocr

설치가 완료되면 이미지에서 텍스트를 추출하기 위해 EasyOCR를 사용할 수 있습니다.

import easyocr

# Initialize the OCR reader
reader = easyocr.Reader(['en'])

# Extract text from an image
result = reader.readtext('image_sample.png')

# Print the extracted text
for detection in result:
    print(detection[1])

3. OCRopus

OCRopusGoogle에서 개발한 오픈 소스 OCR 시스템입니다. 주로 역사 문서와 책에 사용되지만, OCRopus는 다양한 텍스트 추출 작업에도 적용할 수 있습니다.

주요 기능:

  • 문서 레이아웃 분석 및 텍스트 추출에 특화되어 있습니다.
  • 모듈성을 고려하여 구축되어 있어 쉬운 사용자 정의가 가능합니다.
  • 다중 페이지 문서 및 대규모 데이터셋과 작업할 수 있습니다.

다음은 이미지에서 텍스트를 추출하는 예제 Python 코드입니다.

import subprocess

# Use OCRopus to process an image
subprocess.run(['ocropus', 'identify', 'image_sample.png'])

4. PyOCR

PyOCRTesseractCuneiForm을 포함한 여러 OCR 엔진을 감싸는 Python 래퍼입니다. Python 애플리케이션에 OCR 기능을 통합하기 위한 간단한 인터페이스를 제공합니다.

주요 기능:

  • 여러 OCR 엔진과 인터페이스할 수 있습니다.
  • 텍스트 추출을 위한 간단한 API를 제공합니다.
  • 이미지 전처리 라이브러리와 결합하여 결과를 개선할 수 있습니다.

PyOCRTesseract (OCR 엔진) 및 Pillow (이미지 처리 라이브러리)가 필요합니다. 다음 명령을 사용하여 설치할 수 있습니다:

sudo apt install tesseract-ocr     [On Debian, Ubuntu and Mint]
sudo yum install tesseract         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract  [On Gentoo Linux]
sudo apk add tesseract             [On Alpine Linux]
sudo pacman -S tesseract           [On Arch Linux]
sudo zypper install tesseract      [On OpenSUSE]    
sudo pkg install tesseract         [On FreeBSD]

이제 pyocrpillow 라이브러리를 pip를 사용하여 설치할 수 있습니다:

pip3 install pyocr pillow
OR
pip install pyocr pillow

다음은 PyOCRTesseract를 사용하여 이미지에서 텍스트를 추출하는 Python 예시입니다:

import pyocr
from PIL import Image

# Choose the OCR tool (Tesseract or CuneiForm)
tool = pyocr.get_available_tools()[0]

# Load the image
img = Image.open('image_sample.png')

# Extract text from the image
text = tool.image_to_string(img)

# Print the extracted text
print(text)

5. PaddleOCR

PaddleOCR는 딥 러닝 프레임워크인 PaddlePaddle에서 개발한 OCR 라이브러리입니다. 80개 이상의 언어를 지원하며 딥 러닝 모델을 사용하여 최신 정확도를 제공합니다.

주요 기능:

  • 복잡한 배경을 가진 이미지에 대한 우수한 성능.
  • 텍스트 감지, 인식 및 레이아웃 분석 지원.
  • 다양한 언어에 대해 사전 훈련된 모델 포함.

PaddleOCR를 Linux에 설치하려면 다음을 사용하십시오:

pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr

다음은 paddleocr 라이브러리를 사용하여 이미지에서 텍스트를 추출하는 Python 예시입니다:

from paddleocr import PaddleOCR

# Initialize the OCR
ocr = PaddleOCR(use_angle_cls=True, lang='en')

# Perform OCR on an image
result = ocr.ocr('image_sample.png', cls=True)

# Print the extracted text
for line in result[0]:
    print(line[1])

6. Kraken

Kraken은 역사적이고 다국어 텍스트에 특별히 설계된 고성능 OCR 라이브러리입니다. OCRopus 위에 구축되었으며 복잡한 레이아웃 및 텍스트 추출을 위한 추가 기능을 제공합니다.

주요 기능:

  • 오래된 책과 다국어 OCR에 가장 적합함.
  • 복잡한 텍스트 레이아웃 및 역사적인 글꼴 처리 가능.
  • 기계 학습을 사용하여 인식 정확도를 향상시킵니다.

Linux에 Kraken을 설치하려면:

pip3 install kraken
OR
pip install kraken

다음은 kraken 라이브러리를 사용하여 이미지에서 텍스트를 추출하는 Python 예제입니다:

import kraken

# Load the model and recognize text
text = kraken.binarize("image_sample.png")

# Print the recognized text
print(text)

7. Textract (AWS)

AWS Textract는 문서와 양식을 분석하고 높은 정확도로 텍스트를 추출할 수 있는 아마존의 클라우드 기반 OCR 서비스입니다. 다른 AWS 서비스와 원활하게 통합됩니다.

주요 기능:

  • 확장 가능한 솔루션을 갖춘 클라우드 기반 OCR.
  • 표와 양식을 포함한 문서 구조 분석을 지원합니다.
  • 추가 데이터 처리를 위한 AWS 서비스와의 통합.

Linux에 Textract를 설치하려면:

pip3 install boto3
OR
pip install boto3

다음은 AWS Textract를 사용하여 문서(예: 스캔한 PDF 또는 이미지 파일)에서 텍스트를 추출하는 Python 스크립트 예제입니다.

import boto3

# Initialize a Textract client
client = boto3.client('textract')

# Path to the image or PDF file you want to analyze
file_path = 'path_to_your_file.png'  # Replace with your file path

# Open the file in binary mode
with open(file_path, 'rb') as document:
    # Call Textract to analyze the document
    response = client.detect_document_text(Document={'Bytes': document.read()})

# Print the extracted text
for item in response['Blocks']:
    if item['BlockType'] == 'LINE':
        print(item['Text'])
결론

Python에서 올바른 OCR 라이브러리를 선택하는 것은 특정 사용 사례, 언어 요구 사항 및 처리 중인 문서의 복잡성에 따라 다릅니다. 역사 문서, 다국어 텍스트 또는 간단한 스캔된 PDF 작업을 수행하든, 이러한 라이브러리는 텍스트 추출을 위한 강력한 도구를 제공합니다.

초보자에게는 TesseractEasyOCR가 사용이 간편하고 널리 채택되어 있어 훌륭한 시작점입니다. 하지만 더 고급이거나 전문화된 작업을 위해서는 PaddleOCR, OCRopus, Kraken과 같은 라이브러리가 더 큰 유연성과 정확성을 제공합니다.

Source:
https://www.tecmint.com/python-text-extraction-from-images/