본문 바로가기
파이썬 (Python)/딥러닝 (Deep Learning)

파이썬 Python Tessaract-OCR 정의 및 사용 방법

by ★√★ 2021. 2. 28.

안녕하세요, 오늘은, Python을 이용하여, OCR (optical character recognition)을 구현하는 방법에 대한 내용을 게시할려고 합니다. 이전에도 말씀드렸지만, OCR은 쉽게 애기해서 문서를 자동으로 인식해서 문자로 변환해주는 것입니다.

 

파이썬-Tessaract-OCR-썸네일

 

 이전 포스팅에서 설치한, Tesseract-OCR 프로그램을 이용해서, 실습을 해보도록 하겠습니다. 이전 포스팅을 안보고 오셨다면 아래 링크를 통해서 이전 내용 참조 및 Tesseract-OCR 프로그램 설치 후 아래 포스팅을 보시길 추천 드립니다.

 

 환경변수, Path 항목을 수정을 하였고, 어떤 경로에서든, Tesseract-OCR 프로그램을 사용할 수 있는 상태입니다. 본격적으로 들어가기 전에, 이전 포스팅에서 말하지 않은, Tesseract에 대해서 간략하게 소개하면 아래와 같습니다. 

 

1. Tesseract 란?

( 참조 출처 : https://ko.wikipedia.org/wiki/%ED%85%8C%EC%84%9C%EB%9E%99%ED%8A%B8)

 

테서랙트 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. TesseractTesseract 3.02 running on Gnome Terminal 3.8.0. "input_image.tif" is the input document which will be rendered as "output_text.txt" by Tesseract.원저자Ray Smith, Hewlett-Packard[1]개발자Google안정화 버전4.1.1 / 2019년 12월 26일 (48일 전)(2019-1

ko.wikipedia.org

- 테서랙트(Tesseract)는 다양한 운영 체제를 위한 광학 문자 인식 엔진입니다. 이 소프트웨어는 Apache License, 버전 2.0,[4][5] 에 따라 배포되는 무료 소프트웨어이며 2006년부터 Google에서 개발을 후원했습니다. 2006년 테서랙트는 당시 가장 정확한 오픈 소스 OCR 엔진 중 하나로 간주되었습니다.

 

2. Tesseract 특징

 

- 테서랙트는 1995년 문자 정확도 측면에서 3대 OCR 엔진에 속했습니다. Linux, Windows 및 Mac OS X에서 사용할 수 있습니다. 그러나 제한된 리소스로 인해 Windows 및 Ubuntu에서 개발자가 엄격하게 테스트합니다.

 

- 버전 2 이하의 테서랙트는 간단한 단일 열 텍스트의 TIFF 이미지만 입력으로 허용할 수 있었습니다. 이 초기 버전에는 레이아웃 분석이 포함되지 않았으므로 여러 열로 된 텍스트, 이미지 또는 방정식을 입력하면 왜곡된 출력이 만들어졌습니다. 버전 3.00부터 테서랙트는 출력 텍스트 형식, hOCR[9] 위치 정보 및 페이지 레이아웃 분석을 지원했습니다. Leptonica 라이브러리를 사용하여 여러 가지 새로운 이미지 형식에 대한 지원이 추가되었습니다. Tesseract는 텍스트가 단일 간격인지 또는 비례 간격인지 감지할 수 있습니다.

 

- 테서랙트의 초기 버전은 영어 텍스트만 인식할 수있었습니다. 테서랙트 v2는 6개의 추가 서구 언 (프랑스어, 이탈리아어, 독일어, 스페인어, 브라질 포르투갈어, 네덜란드어)를 추가했습니다. 표의 문자 (중국어 및 일본어) 및 오른쪽에서 왼쪽(예 : 아랍어, 히브리어) 언어 및 더 많은 스크립트를 포함해서 확대 지원됩니다. 새로운 언어에는 아랍어, 불가리아어, 카탈로니아어, 중국어(간체 및 번체), 크로아티아어, 체코어, 덴마크어, 독일어(프락투어 스크립트), 그리스어, 핀란드어, 히브리어, 힌디어, 헝가리어, 인도네시아어, 일본어, 한국어, 라트비아어, 리투아니아어, 노르웨이어, 폴란드어, 포르투갈어, 루마니아어, 러시아어, 세르비아어, 슬로바키아어(표준 및 Fraktur 스크립트), 슬로베니아어, 스웨덴어, 타갈로그어, 타밀어, 태국어, 터키어, 우크라이나어 및 베트남어가 포함됩니다. 2015년 7월에 릴리스된 V3.04는 39개 언어/스크립트 조합을 추가하여 총 지원 언어 수를 100개 이상으로 늘 렸습니다. 새로운 언어 코드로 포함된 언어입니다: amh(암하라어), asm(아삼어), aze_cyrl(키릴 문자의 아제르바이잔), bod(티벳어), bos(보스니아어), ceb(세부아노어), cym(웨일스 어), dzo(종카어), fas( 페르시아어), gle(아일랜드어), guj(구자라트 어), hat(아이티어 및 아이 티크리올어), iku(이누이트어), jav(자와어), kat(조지아어), kat_old(올드 조지아어), kaz(카자흐어), khm(중부 크메르어), Kir(키르기스어), kur(쿠르드어), lao(라오어), lat(라틴어), mar(마라티어), mya(버마어), nep(네팔어), ori(오리야어), pan(펀자브어), pus(파슈토어), san(산스크리트어), sin(싱할라어), srp_latn(라틴어 스크립트의 세르비아어), syr(시리아어), tgk(타지크어), tir(티그리냐어), uig(위구르워), urd(우르두어), uzb(우즈베크어), uzb_cyrl (키릴 문자로 된 우즈베크어), yid (이디시어).

 

- 또한 테서랙트는 다른 언어로 작동하도록 훈련될 수 있습니다.[5]

 

- 테서랙트는 아랍어 또는 히브리어와 같은 오른쪽에서 왼쪽으로의 텍스트, 많은 인도어 스크립트 및 CJK를 상당히 잘 처리할 수 있습니다. 레이 스미스의 DAS 2016, 산토리니의 테서랙트 튜토리얼에 대한 이 프레젠테이션에는 정확도가 표시됩니다.

 

- 테서랙트는 백엔드로 사용하기에 적합하며 OCRopus와 같은 프론트 엔드를 사용하여 레이아웃 분석을 포함하여 보다 복잡한 OCR 작업에 사용할 수 있습니다.

 

- 입력 이미지가 이미지에 맞게 사전 처리되지 않은 경우 테서랙트의 출력 품질이 매우 떨어집니다. 텍스트의 x-높이가 20픽셀 이상이 되도록 이미지(특히 스크린 샷 )의 크기를 조정해야 합니다.[13] 회전 또는 기울어짐을 수정해야 합니다. 또는 텍스트가 인식되지 않거나, 저주파수의 밝기 변화가 고역 필터링되어야 하거나, 테서랙트의 이진화 단계가 많은 페이지를 파괴하고, 어두운 테두리를 수동으로 제거해야합니다. 그렇지 않으면 문자로 잘못 해석됩니다.

 

 

3. Tesseract 활용

 

일단, 자신이 OCR하고 싶은, 그림 파일이랑 관련 Folder를 만듭니다. 

 

 

파이썬-Tessaract-OCR-코드구현-사진1

 

 

여기 있는, File은 그냥 Naver에서 Snap shot 찍은 사진이므로, 아무 사진이나 사용하셔도 무방합니다. 

 

3-1. English 그림 파일 

 

 

English 그림 파일

 

 

3-2. Korean 그림 파일

 

Korean 그림 파일

 

 

 

그럼, 직접 실행창에, "cmd"를 입력하고, 명령 프롬프트 창으로 접속합니다. 

그리고, 해당 그림파일이 있는, Folder에 경로 지정을 하고 아래와 같이 실행 구문을 입력합니다. 

1) English OCR : tesseract - c preserve-interword_spaces=1 English.png stdout -l eng > English.txt

2) Korean OCR : tesseract - c preserve-interword_spaces=1 Korean.png stdout -l kor > Korean.txt

 

 

English.png 파일 OCR

 

 

 

Korean.png 파일 OCR

 

 

 

실행을 하면, Folder에 보면, English.txt & Korean.txt 파일이 생성이 됩니다. 

 

 

파이썬-Tessaract-OCR-코드구현-사진2

 

 

 

각 파일을 열어 보면, 아래와 같이 OCR이 서공적으로 된 것을 확인 할 수 있습니다. 

 

 

파이썬-Tessaract-OCR-코드구현-사진3

 

 

 

파이썬-Tessaract-OCR-코드구현-사진4

 

 

 

이상입니다. 지금까지 Python을 이용하여, OCR (optical character recognition)을 구현하는 방법에 대해서, 포스팅을 작성하였습니다. 이후 포스팅에는 Tesseract-OCR에 대한, Option 중에도 여러가지 (Ex. Psm(Page Segmentation Mode)가 있으니, 차근 차근, 실습해보도록 하겠습니다. 

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

 

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab