OCR 합성 데이터

합성 데이터 제작은 원본 데이터 없이 새로운 데이터를 인공적으로 만들어내는 기법으로, 적은 비용으로도 비교적 좋은 품질의 훈련데이터를 확보할 수 있다.

TextRecognitionDataGenerator

TextRecognitionDataGenerator는 text recognition data의 합성을 염두에 두고 제작된 패키지이다.detection/localization task엔 어떻게 활용할 수 있을까?
 - ikipedia 검색, 랜덤 텍스트 생성 등 다양한 방법으로 텍스트 이미지를 생성할 수 있다.

🌳🔬Treescope

Treescope란 Jupyter Notebook에서 변수를 더 보기 좋게 출력하기 위해 Google에서 개발한 패키지이다.
잘 정돈된 데이터라 하더라도 가공 없이 데이터를 읽고 파악하는 것은 어려운 일이다. 🚀 Treescope를 사용하면 그 어려움을 조금이나마 덜 수 있다.

화면 왼쪽에 생성된 문서 이미지를 출력

plt.subplot(1, 2, 1)

plt.imshow(document['image'])

plt.axis('off')

plt.title("generated document")

화면 오른쪽에는 문서 이미지에 bounding box를 그린 이미지를 출력

plt.subplot(1, 2, 2)

draw_bbox(document)

plt.title("document w. bboxes")


- 다양하지 않은 글꼴, 명암, 대비, 색조 등 여러가지 원인을 고려하여 카메라의 시점(=위치&방향)을 바꾸어 조금 더 다양한 데이터를 만들기
  [OpenCV: Geometric Image Transformations](https://docs.opencv.org/4.x/da/d54/group__imgproc__transform.html)
  `cv2.getPerspectiveTransform`
- 시점변환 행렬 M을 이용해 bbox 좌표를 변환하는 함수 구현
  [Lesson 4: Perspective projection · ssloy/tinyrenderer Wiki · GitHub](https://github.com/ssloy/tinyrenderer/wiki/Lesson-4:-Perspective-projection#homogeneous-coordinates)

데이터 생성 및 증강을 통해 더 다양한 데이터를 모델에게 학습시킨다면 적은 데이터로도 좋은 성능을 얻을 수 있을 것 !