python PyOCR 일본어 문자 인식 프로그램 작성 LineBoxBuilder

python post logo 파이썬

pyocr.builders.LineBoxBuilder를 사용해서 문자 인식(tool.image_to_string) 한 결과는 행 단위로 인식한 문자와 그에 대응하는 이미지 영역의 위치 정보를 포함하고 있습니다. 이 영역의 위치 정보를 가지고 원래의 이미지에 사각형 라인을 표시하면 이미지의 어떤 영역을 문자 인식했는지 알 수 있습니다. 이 글에서는 LineBoxBuilder의 이해를 돕기 위해 간단한 샘플 프로그램을 작성, 시연해 보겠습니다.

Tesseract 설치하기, PyOCR 설치하기는 이전 글 python PyOCR 문자 인식 프로그램 작성 DigitBuilder를 참조 하십시오.

샘플 프로그램 작성

일본어 문자 인식 프로그램을 테스트하기 위한 오른쪽 이미지를 test_jpn.png이름으로 로컬 드라이브 (예:C:¥testocr¥test_jpn.png)에 저장합니다.

다음 소스를 드라이브 (예:C:¥testocr¥testocr_jpn_line.py)에 저장합니다.

소스 내용 설명

  • 10-11행 : testocr_jpn_line.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 이미지 파일을 읽고 LineBoxBuilder(행 단위로 문자 인식)를 사용해 ‘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_line.py
((107, 34), (960, 71))
((70, 112), (953, 150))
((70, 191), (960, 228))
((71, 269), (661, 306))
((100, 347), (955, 384))
((62, 427), (961, 464))
((62, 505), (955, 542))
((61, 583), (897, 619))
((100, 661), (897, 699))

この度の新型コロナウイルスの影響による居酒屋
しのや店舗休業におきましては、お客様をはじめと
します関係各所の皆様にはご迷惑をお掛け致してお
ります。大変申し訳ございません。
休業期間につきましては4月19日(日)までとご
案内させて頂いておりましたが、政府による緊急事
態宣言の発表を受けまして、5月6日(水)まで休業
期間延長の対応を取らせて頂く事に致しました。
何卒ご理解賜りますようお願い申し上げます。
제목과 URL을 복사했습니다