| / | 내용 |
| easyocr |
|
| examples |
|
| scripts |
|
| trainer |
|
| unit_test |
|
| Dockerfile |
|
| README.md |
|
|
|
|
|
|
|
| setup.cfg | |
| setup.py |
|
README.md
1. 프로젝트 개요
EasyOCR은 80개 이상의 언어를 지원하는 Ready-to-use OCR 라이브러리.
중국어, 한글, 일본어, 아랍어, 힌디어, 데바나가리 등 대부분의 문자체계를 지원하며, 사용하기 쉽게 만들어진 라이브러리.
PyTorch 기반
Detection 모델 → CRAFT
Recognition 모델 → CRNN
디코딩 → CTC Greedy / CTC Beamsearch
2. Badge & 배포 상태
README 상단 배지들은 EasyOCR의 상태를 보여줌:
PyPI 버전
Apache 2.0 License
Colab 데모 링크
Huggingface Spaces(Gradio 기반) 데모
6. Installation
설치 방법 2가지:
(1) 안정 버전
pip install easyocr
(2) 개발 버전 (GitHub 최신)
pip install git+https://github.com/JaidedAI/EasyOCR.git
7. 사용법 (Usage)
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
result = reader.readtext('chinese.jpg')
Reader 특징
Reader 객체는 한 번만 생성하면 됨
모델은 자동 다운로드
OpenCV/Numpy 이미지 배열(이미 로드된 이미지)도 입력 가능
URL도 입력 가능
8. Command Line 지원
easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
9. 모델 학습 / 커스텀 모델
Recognition 모델 학습 문서:
custom_model.md
Detection 모델(CRAFT) 학습 문서:
trainer/craft/README.md
✦ unit_test 디렉토리
* `README.md`: run_unit_test.py를 사용하여 단위 테스트를 실행하는 방법에 대한 지침을 제공합니다.
* `run_unit_test.py`: 테스트 실행을 위한 주요 스크립트입니다. 명령줄 인수(EasyOCR 모듈 경로, 테스트 데이터, 이미지 디렉토리, 상세도)를 구문
분석하고 UnitTest 클래스를 사용하여 테스트를 수행합니다.
* `unit_test.py`: UnitTest 클래스를 정의합니다. 이 클래스는 다음을 담당합니다:
* EasyOCR 모듈을 동적으로 임포트합니다.
* .pickle 파일에서 테스트 케이스와 예상 출력을 로드합니다.
* 테스트를 위한 입력 이미지를 처리합니다.
* 테스트 입력으로 EasyOCR 함수를 실행합니다.
* 숫자 허용 오차를 고려하여 실제 출력을 예상 출력과 비교하여 유효성을 검사합니다.
* 구성 가능한 상세도로 테스트 결과를 보고합니다.
* `make_test_solution.py`: EasyOcrUnitTestPackage.pickle 파일을 생성하는 스크립트입니다. 이 스크립트는 다양한 EasyOCR 함수(예: 모델 초기화,
get_textbox, detect, recognize, readtext)에 대한 다양한 테스트 시나리오를 정의하고, 특정 입력으로 이러한 함수를 실행하며, 입력 및 해당
출력("솔루션")을 pickle 파일에 저장합니다. 이는 EasyOCR 라이브러리의 예상 동작 스냅샷을 효과적으로 생성합니다.
* `demo.ipynb` 및 `demo.py`: 이 파일들은 테스트 프레임워크를 사용하거나 개발하는 방법에 대한 예제 또는 대화형 데모 역할을 할 가능성이
높습니다.
* `data/`: 이 디렉토리에는 생성된 EasyOcrUnitTestPackage.pickle 파일 및 기타 필요한 테스트 데이터가 포함될 것으로 예상됩니다.
요약하자면, unit_test 디렉토리는 EasyOCR 라이브러리의 기능을 정의, 실행 및 검증하기 위한 강력한 프레임워크를 제공하며, 현재 출력을 미리
기록된 "솔루션" 출력과 비교합니다.
✦ unit_test/data/EasyOcrUnitTestPackage.pickle 파일은 EasyOCR의 단위 테스트를 위한 모든 정보가 담겨있는 압축된 파이썬 피클(pickle) 파일입니다. 이 파일은 바이너리
형식이라 직접 내용을 볼 수는 없지만, unit_test/make_test_solution.py 스크립트를 통해 그 구조와 내용을 유추할 수 있습니다.
이 파일에 포함된 주요 정보는 다음과 같습니다.
1. 입력 데이터 (Inputs):
* 테스트에 사용될 이미지와 그 이미지의 특정 부분을 자르기 위한 좌표 값.
* EasyOCR 설정을 위한 정보.
2. 테스트 케이스 (Tests):
* EasyOCR의 여러 기능(예: detect, recognize, readtext 등)에 대한 테스트 모음입니다.
* 각 테스트 케이스는 다음을 포함합니다:
* 테스트할 함수: 실행할 특정 함수.
* 입력값: 해당 함수에 전달될 입력 데이터.
* 예상 출력 (Solution): 해당 입력값으로 함수를 실행했을 때 나와야 하는 정확한 결과값. 이 값은 미리 계산되어 파일에 저장되어 있습니다.
* 설명 및 심각도: 테스트에 대한 설명과 실패 시의 중요도.
run_unit_test.py를 실행하면, unit_test.py의 UnitTest 클래스가 이 .pickle 파일을 로드합니다. 그리고 파일에 정의된 대로 각 함수를 테스트 입력값으로 실행한 뒤,
그 결과를 파일에 저장된 예상 출력값과 비교하여 테스트의 성공 또는 실패를 판단합니다.
결론적으로, 이 파일은 EasyOCR의 각 기능이 정확하게 작동하는지를 검증하기 위한 "정답지" 역할을 하는 핵심 데이터 파일입니다.
✦ 단위 테스트를 실행하는 방법.
1. EasyOCR 프로젝트 루트 디렉토리로 이동합니다.
현재 작업 디렉토리가 /Users/chloe/edu/EasyOCR이므로, 이 디렉토리에서 다음 명령을 실행하면 됩니다.
2. `run_unit_test.py` 스크립트를 실행합니다.
unit_test/README.md 파일에 설명된 대로, 다음 명령을 사용하여 단위 테스트를 실행할 수 있습니다:
1 python ./unit_test/run_unit_test.py --easyocr ./easyocr --verbose 2 --test ./unit_test/data/EasyOcrUnitTestPackage.pickle
--image_data_dir ./examples
명령어 인수에 대한 설명:
* --easyocr ./easyocr: 테스트할 EasyOCR 패키지의 디렉토리를 지정합니다. 이 경로는 __init__.py 파일이 있는 디렉토리를 가리켜야 합니다.
* --verbose 2: 테스트 결과 보고의 상세도 수준을 설정합니다.
* 0: 최종 결과만 보고합니다.
* 1: 각 테스트 모듈의 결과도 보고합니다.
* 2: 각 모듈의 각 테스트 결과도 보고합니다. (권장)
* 3: 각 테스트의 계산된 출력과 예상 출력도 보고합니다.
* 4 이상: 각 테스트의 입력도 보고합니다. (콘솔에 많은 텍스트가 출력될 수 있습니다.)
* --test ./unit_test/data/EasyOcrUnitTestPackage.pickle: 사용할 테스트 패키지 파일의 경로를 지정합니다. 기본값은
./unit_test/data/EasyOcrUnitTestPackage.pickle입니다.
* --image_data_dir ./examples: EasyOCR 예제 이미지가 포함된 디렉토리의 경로를 지정합니다. 기본값은 ./examples/입니다.
이 명령을 실행하면 EasyOCR의 단위 테스트가 시작되고, --verbose 인수에 따라 상세한 테스트 결과가 콘솔에 출력됩니다.
아래는 명령어를 실행시 사용한 명령어다. CUDA가 없다면 colab을 사용하시면 된다.
python ./unit_test/run_unit_test.py --easyocr ./easyocr --verbose 2 --test ./unit_test/data/EasyOcrUnitTestPackage.pickle --image_data_dir ./examples
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install Pillow
pip install numpy
pip install torch
pip install torchvision
pip install opencv-python
pip install scipy
pip install scikit-image
pip install python-bidi
pip install PyYAML
########################
colab에서 사용했다.
########################
/content/EasyOCR# python ./unit_test/run_unit_test.py --easyocr ./easyocr --verbose 2 --test ./unit_test/data/EasyOcrUnitTestPackage.pickle --image_data_dir ./examples
Unit test is set for EasyOCR at /content/EasyOCR/easyocr
Testing EasyOCR: 9 modules will be tested.
##Testing module model initialization: 4 tests will be performed.
#### test01: Counting parameters of detector module.
#### Passed. [1/4]
#### test02: Calculating total norm of parameters in detector module.
#### Passed. [2/4]
#### test03: Counting parameters of recognition module.
#### Passed. [3/4]
#### test04: Calculating total norm of parameters in recognition module.
#### Passed. [4/4]
##Module model initialization: Passed.
##Testing module get_textbox function: 3 tests will be performed.
#### test01: Testing with default input.
#### Passed. [1/3]
#### test02: Testing with custom input.
#### Passed. [2/3]
#### test03: Testing with custom input.
#### Passed. [3/3]
##Module get_textbox function: Passed.
##Testing module group_text_box function: 3 tests will be performed.
#### test01: Testing with default input.
#### Passed. [1/3]
#### test02: Testing with custom input.
#### Passed. [2/3]
#### test03: Testing with custom input.
#### Passed. [3/3]
##Module group_text_box function: Passed.
##Testing module detect method: 3 tests will be performed.
#### test01: Testing with default input.
#### Passed. [1/3]
#### test02: Testing with custom input.
#### Passed. [2/3]
#### test03: Testing with custom input.
#### Passed. [3/3]
##Module detect method: Passed.
##Testing module get_image_list function: 2 tests will be performed.
#### test01: Testing with default input.
#### Passed. [1/2]
#### test02: Testing with custom input.
#### Passed. [2/2]
##Module get_image_list function: Passed.
##Testing module get_text_test function: 3 tests will be performed.
#### test01: Testing with default input.
#### Passed. [1/3]
#### test02: Testing with custom input.
#### Passed. [2/3]
#### test03: Testing with custom input.
#### Passed. [3/3]
##Module get_text_test function: Passed.
##Testing module get_paragraph_test function: 3 tests will be performed.
#### test01: Testing with default input.
#### Passed. [1/3]
#### test02: Testing with custom input.
#### Passed. [2/3]
#### test03: Testing with custom input.
#### Passed. [3/3]
##Module get_paragraph_test function: Passed.
##Testing module recognize method: 2 tests will be performed.
#### test01: Testing with default input.
#### Passed. [1/2]
#### test02: Testing with custom input.
#### Passed. [2/2]
##Module recognize method: Passed.
##Testing module readtext method: 4 tests will be performed.
#### test01: Reading English text.
#### Passed. [1/4]
#### test02: Reading French text.
#### Passed. [2/4]
#### test03: Reading Chinese (simplified) text.
#### Passed. [3/4]
#### test04: Reading Korean text.
#### Passed. [4/4]
##Module readtext method: Passed.
##################################################
Testing completed:
Final result: Passed.
/content/EasyOCR#