https://brunch.co.kr/@kakao-it/318
OCR은 이미지 속에서 영문을 Bounding box로 찾고, B-box 내 어떤 text가 포함되는지 알 수 있는 시스템입니다.
Text Detection(이미지 속에서 문자 영역을 찾아내는 것)은 Segmentation 기반의 CRAFT를 활용한 keras-ocr을 활용할 예정입니다.
Recognition 모델로는 keras-ocr이 있는데 이를 간단히 살펴보겠습니다.
Keras-ocr은 Keras CRNN 구현 및 CRAFT 텍스트 감지 모델의 패키지된 버전입니다. 텍스트 감지 및 OCR 파이프라인 교육을 위한 고급 API를 제공합니다.
패키지는 이 리포지토리의 CRAFT 텍스트 감지 모델과CRNN 인식 모델의 사용하기 쉬운 구현과 함께 제공됩니다.
import matplotlib.pyplot as plt
import keras_ocr
# keras-ocr will automatically download pretrained
# weights for the detector and recognizer.
pipeline = keras_ocr.pipeline.Pipeline()
# Get a set of three example images
images = [
keras_ocr.tools.read(url) for url in [
'https://upload.wikimedia.org/wikipedia/commons/b/bd/Army_Reserves_Recruitment_Banner_MOD_45156284.jpg',
'https://upload.wikimedia.org/wikipedia/commons/b/b4/EUBanana-500x112.jpg'
]
]
# Each list of predictions in prediction_groups is a list of
# (word, box) tuples.
prediction_groups = pipeline.recognize(images)
# Plot the predictions
fig, axs = plt.subplots(nrows=len(images), figsize=(20, 20))
for ax, image, predictions in zip(axs, images, prediction_groups):
keras_ocr.tools.drawAnnotations(image=image, predictions=predictions, ax=ax)
해당 github에서 제공하는 'https://upload.wikimedia.org/wikipedia/commons/e/e8/FseeG2QeLXo.jpg'의 주소는 url이 없어졌는지 404 error가 떠서 지웠습니다.
※ 원래 불러올 이미지는 아래 사진 참고
Keras-ocr에서는 Convolution layer와 RNN을 결합하고 CTC로 학습된 CRNN을 사용하며 recognition을 지원합니다.