pyocr.builders.WordBoxBuilder를 사용해서 문자 인식(tool.image_to_string)한 결과는 단어 단위로 인식한 문자와 그에 대응하는 이미지 영역의 위치 정보를 포함하고 있습니다. 이 영역의 위치 정보를 가지고 원래의 이미지에 사각형 라인을 표시하면 이미지의 어떤 영역을 문자 인식했는지 알 수 있습니다. 이 글에서는 WordBoxBuilder의 이해를 돕기 위해 간단한 샘플 프로그램을 작성, 시연해 보겠습니다.
Tesseract 설치하기, PyOCR 설치하기는 이전 글 python PyOCR 문자 인식 프로그램 작성 DigitBuilder를 참조 하십시오.
샘플 프로그램 작성
일본어 문자 인식 프로그램을 테스트하기 위한 오른쪽 이미지를 test_jpn.png이름으로 로컬 드라이브 (예:C:¥testocr¥test_jpn.png)에 저장합니다.
다음 소스를 드라이브 (예:C:¥testocr¥testocr_jpn_word.py)에 저장합니다.
소스 내용 설명
- 10-11행 : testocr_jpn_word.py가 저장되어있는 디렉토리를 현재 작업 디렉토리로 변경합니다. 자세한 설명은 python 확장자 .py파일 실행할 때 현재 작업 디렉토리 변경하기를 참조 하십시오
- 13-15행 : “C:\\Program Files\\Tesseract-OCR”가 시스템 환경 변수 %PATH%에 등록되어 있지 않다면 추가 합니다.
- 17-22행 : Tesseract-ocr의 설치에서 문제가 발생했거나 시스템 환경 변수 %PATH%에 설치 경로가 추가 되어있지 않았다면 “OCR tool is not found in path(Tesseract-ocr의 설치 경로)” 메시지를 출력하고 프로그램이 에러 종료됩니다. 그렇지 않다면 OCR tool을 취득해 다음으로 진행합니다.
- 24-30행 : test_jpn.png 이미지 파일을 읽고 WordBoxBuilder(단어 단위로 문자 인식)를 사용해 ‘jpn’ 문자로 변환합니다.
- 32행 : 단어 단위 문자 인식 영역에 사각형 라인을 표시할 이미지를 메모리로 배치합니다.
- 34행 : 단어 단위 문자 인식 결과를 저장할 editor 리스트(배열)을 선언합니다.
- 35행 : 줄 바꿈을 위한 변수를 선언합니다.
- 37행 : 단어 단위 문자 인식 영역의 좌표를 화면에 출력합니다. 형식은 (왼쪽 상단의(x, y), 오른쪽 하단의(x, y)) 와 같습니다.
- 38-40행 : 단어 단위 문자 인식 결과는 줄 바꿈을 고려하지 않습니다. 그래서 단어 단위 문자 인식 영역 좌표의 오른쪽 하단 y축 위치가 일정 폭 이상 커진다면 줄 바꿈 하도록 하고 있습니다. 줄 바꿈 코드를 editor 리스트(배열)에 추가합니다.
- 41행 : 단어 단위 문자 인식 결과를 editor 리스트(배열)에 추가 합니다.
- 42행 : 단어 단위 문자 인식 영역을 cv2.rectangle사용하여 Green (0, 255, 0)색 과 선 굵기 1로 사각형 선을 만듭니다.
- 44행 : 단어 단위 문자 인식 결과는 editor 리스트(배열)에 단어 별로 저장되어 있습니다. join를 사용해 연결된 문자열로 변경합니다. 그리고 일본어는 띄어쓰기가 없기 때문에 replace를 사용해 모든 공백을 삭제합니다.
- 46행 : 문자 인식의 단어 단위 영역을 사각형 라인으로 표시한 이미지를 화면에 표시합니다.
표시 결과는 오른쪽 화면과 같습니다. - 47-48행 :아무 키나 누르면 이미지를 닫습니다.
실행 및 결과 확인
다음과 같이 python 또는 py 명령을 실행하여 그 결과를 화면에 출력합니다. 물론 100%의 인식율은 기대하기 어렵습니다.
C:¥testocr>python testocr_jpn_word.py
((107, 41), (172, 67))
((180, 34), (214, 71))
... 중간생략 ...
((70, 116), (92, 146))
((104, 119), (130, 145))
... 중간생략 ...
この
度の新型コロナウイルスの影響による居酒屋
しのゃ店舗休業におきましては、お客様をはじめと
します関係各所の皆様にはご迷惑をお掛け致してお
ります。大変申し訳ございません。
休業間につきましては4月19日(日)までとご
案内させて頂いておりましたが、政府による緊急事
態宣言の発表を受けまして、5月6日(水)まで休業
期間延長の対応を取らせて頂く事に致しました。
何卒ご理解賜りますようお願い申し上げます。