ABBYY의 기술로 버마어를 읽다! 



안녕하세요, 레티아 이주임입니다.

OCR 문자인식 기술에 조금이라도 관심있으신 분들이라면,굉장히 흥미로울만한 이야기를 들고 왔습니다 :)


여러분 도대체 ABBYY 파인리더는 어떻게 '이미지' 를 '텍스트' 로 인식하는 지 궁금하셨죠? 


이미지의 텍스트를 읽어내기 위해 어떤 개발 과정이 필요한 지, 아래 내용을 보시면 좀 더 쉽게 이해가 되실거에요! ABBYY의 새로운 버마어 인식 프로젝트를 소개합니다!  


 

( *참고 : ABBYY 파인리더는 현재 버마어 인식을 지원하지 않습니다. 

아래 내용은 ABBYY의 버마어 OCR 인식 프로젝트를 소개하는 것이며 향후 OCR패키지프로그램에서도 새로운 인식언어가 추가될 수 있습니다. ) 






동남아시아에 위치한 미얀마 연방공화국은 이전에 버마로 알려져있던 나라입니다. 버마는 1962년부터 2010년까지 군사 정권에 의해 통치되었지만, 지난 5년 간은 다른 나라들과 무역, 문화 링크를 구축하면서 외부 세계에 개발되었습니다. 



버마언어는 많은 방언을 포함하지만, 공식 문헌과 인쇄 매체에 사용되는 코어 알파벳을 공유합니다. 이 공유 알파벳은 33개의 자음과 12 보조 문자를 가지고 있습니다. 지역 방언들은 이외에 다른 글자들도 사용하며, 전체 글자의 수는 코어 알파벳의 약 3배입니다. 



다행히 ABBYY의 작업은 가장 대중적인 미얀마의 세가지 폰트를 최소 10포인트 이상의 크기로 인쇄된 텍스트를 인쇄 하는 것이었습니다. 텍스트 이미지들은 최소 300dpi 이상되는 그레이(회색조), 흑백 또는 칼라 이미지를 선택하였습니다. 





 


위 그림은 전형적인 버마어 텍스트의 모습입니다! 


이 프로젝트의 예비 단계에서 ABBYY는 OCR 정확도 75% , 최소 샘플에 대한 정확도 94% 의 인식률을 달성할 수 있었습니다. 


버마 텍스트는 각 자음이 기본 모음의 소리를 전달하는 소위 "알파실너버리(alphasyllabray)" 입니다. 다른 모음 소리는 특수한 문자들과 자음의 위,아래,전,후 또는 주위에 있는 발음 구별 부호를 사용하여 표현합니다. 흥미로운 사실은, 과거의 텍스트들이 야자수 잎에 씌어졌고 이것들은 직선 자국에 의해 쉽게 손상되기 때문에 대부분의 글자들은 '반원형' 으로 이루어져 있습니다. 


또한 버마어는 '톤' 이 있는 언어입니다. 높은 톤, 낮은 톤, 끽 소리가 나는 주요 세가지 톤과 억지모음 소리와 떨어지는 두 가지의 보조 톤이 있습니다.





버마어의 톤들도 글을 쓸 때 표현되어야 하기 때문에 버마어 텍스트들은 두가지의 발음기호를 주 글자의 위,아래에 효과적으로 배치하고 있습니다. 이런 두 계층 발음 기호 체계는 OCR 소프트웨어에 심각한 문제를 야기합니다! 문자의 일부 조합은 새로운 캐릭터를 형성하기 위해 함께 융합할 수 있어 상황은 더 복잡해집니다. 



OCR 작업에 대해 가장 대중적인 방식으로 설명하자면, OCR은 다음과 같은 처리를 합니다.  


OCR 소프트웨어가 이미지를 수신하면 먼저 이미지를 흑백으로 변화하고 왜곡을 보정합니다. 다음으로 문서에서 '텍스트' '그림' '표' 등 서로 다른 종류들에 대한 영역을 검출합니다. '텍스트' 영역은 다시 라인으로 나뉘어 지고, 라인은 다시 단어로, 단어는 글자 단위로 쪼개어집니다. 각 글자들이 인식된 후 문서의 아래 위로 재조립됩니다.



이미지 프로세싱 및 인식 영역 검출은 버마어도 다른 대부분의 언어와 동일하게 처리가 되지만, 버마어의 라인 검출은 다양한 발음기호 때문에 짧은 라인을 식별할 수 있도록 OCR 프로그램을 훈련하는 것이 어려워, 까다로운 작업일 수 밖에 없습니다. 



ABBYY의 알고리즘은 텍스트 라인을 특정 짓는 몇 가지 특성들을 사용하며, 이 특성 중 하나가 바로 '가상의' 베이스라인입니다. 

이 베이스 라인 위에 모든 다른 특성값들이 존재하게 됩니다. OCR 프로그램은 개별 문자에 대한 설득력 있는 가설을 생성하기 위해 베이스 라인의 위치를 알아야 합니다. 






OCR 프로그램은 베이스 라인들을 검출하기 위해 통계 데이터를 사용합니다.

필요한 통계를 수집하기 위해 문자들을 구성하는 검은 점으로 생성되는 히스토그램의 피크들을 찾습니다. 유럽어 알파벳에 대한 히스토그램에는, 베이스 라인 및 소문자의 높이에 대응하는 세 개의 선명하게 보이는 피크가 있습니다. 


그러나 버마어에는, 라인의 정상적인 폭 밖에 있는 여러가지 발음기호들 대문에 히스토그램상에 통계적으로 의미있는 추가적인 피크들이 생깁니다. 이런 이유로, 유럽어 텍스트를 대상으로 만들어진 ABBYY의 알고리즘은 버마어 텍스트 라인의 중요한 파라미터를 식별하는 데 실패할 수 밖에 없었습니다. 






위 그림을 보면 OCR 프로그램이 제대로 처음 두 개의 베이스 라인을 검출하지만, 세번째는 검출하는 데 실패한 것을 보실 수 있습니다. 



버마어 텍스트를 정상적으로 인식하려면, 라인 검출 알고리즘의 수정이 필요했습니다. 

라인이 검출되면, 단어와 단어 사이, 글자와 글자 사이의 간격을 찾고 시작할 수 있습니다! 이제 수평 히스토그램을 사용하여 큰 간격은 단어 사이의 공간으로, 작은 간격은 글자 사이의 공백으로 해석할 수 있습니다. 버마어 텍스트에서 간격을 검출하는것은 문제가 거의 없었습니다. 반면 타이어(Thai language)는 거의 간격이 없기 때문에 문제가 있기도 했습니다. (ABBYY의 OCR 기술은 태국어 또한 인식 가능합니다!) 


라인들이 작은 단위로 분리되면 이것들은 다시 독립적은 문자들로 구분합니다. 다시 히스토그램에서 글자 간격에 대응하는 피크들을 찾습니다. 간격들 중 일부는 확실하게 찾아지는 반면, 다른 것들은 여러 시행 착오에 의해 검증되어야 합니다. 




위 그림은 영어 단어에 대한 히스토그램입니다! 버마어 문서의 무수히 많은 반원형 글자들은 간격 검출이 어렵게 만드는 'False' 피크들을 많이 만들지만, 버마어에도 히스토그램 방식은 잘 동작합니다. :) 






이제 각 개별 문자들, 즉 그래핌(grapheme)을 인식합니다. 그래핌은 한 문자의 그래픽적인 표현이지만 유럽어에서 1대1로 대응되지는 않습니다. 한 그래핌이 한 개 이상의 글자에 대응이 될 수도 있고, (예를 들어 대문자 'C' 와 소문자 'c' 는 하나의 그래핌입니다.) 한 글자가 여러 그래핌으로 표현될 수도 있습니다. (예를 들어 'a'는 서로 다른 폰트의 그래핌으로 표현될 수 있습니다)





그래핌의 표준 목록은 없습니다. 

그래서 ABBYY는 각 그래핌에 대한 모든 가능한 글자들을 구체화할 수 있도록 수동으로 만들어 냅니다. 그래핌은 단어 후보가 생성된 이후의 단계에서 문자로 변환됩니다! 







앞서 언급한 바와 같이 버마어 텍스트에는 많은 발음기호 문자들이 있고, 그 중 많은 글자가 주요 글자와 융합되어 새로운 글자를 만들 수 있습니다.  발음기호 표시가 글자와 물리적으로 분리된 경우, 먼저 문자를 인식하고 다음으로 발음 기호를, 그 다음으로 인식결과를 결합하여 그래핌을 얻습니다. 발음기호 표시와 글자가 개별 단위를 형성한다면 전체를 인식합니다. 


융합 글자들은 버마어 문자 체계에서 아주 흔해서 ABBYY 는 3,500개의 새로운 그래핌을 인식하도록 OCR 기술을 훈련해야만 했습니다! 


그래핌을 인식한 후 ABBYY는 그것을 유니코드 문자들로 번역하고 단어들을 만들어야 합니다. 이 과정은 유럽어에서는 아주 간단해서 한 글자씩 인식을 해서 유니코드로 변경하면 됩니다. 그러나 버마어의 융합 글자들은 특별한 처리를 해줘야 합니다. 



Windows가 글자들을 합하기 위해 버마어 글자들이 키보드로부터 입력되어야 하는 특정한 순서가 있습니다. 어떤 글자들은 Windows가 음절의 시작 부분에 입력할 수 있도록 다른 모든 글자들이 타이핑 된 후에 타이핑되어야 합니다. 




예를 들어 텍스트 편집기에서 이 단어를 입력할 때, 사용자는 다음의 순서로 문자를 입력해야 합니다. 






ABBYY는 이런 타이핑 룰을 따르기 위해서 특별한 보정 모듈을 추가했습니다. 모든 텍스트가 인식되면 모듈이 다시 인식 결과를 읽어서 글자 순서가 맞는지를 검사합니다. 버마어는 잘 구조화된 언어이며, 이러한 검사를 수행할 수 있는 충분한 형식적인 규칙이 있습니다. 


단히 버마어 텍스트를 OCR로 인식할 때 ABBYY의 OCR 기술이 직면한 주요 문제들을 간단하게 설명했습니다. ABBYY는 이 프로젝트의 97% 인식 정확도를 만들어내면서 완료하는데 4개월이 걸렸습니다 (고객의 요구사항은 최소 94% 의 정확도) 향후 더 많은 버마어 폰트들이 추가 될 예정입니다! 




 





레티아 블로그를 방문해주셔서 감사합니다! 레티아 블로그에서만 보실 수 있는 다양한 OCR 이야기, 앞으로도 많은 관심부탁 드립니다. 



더 많은 OCR 솔루션이 궁금하시다면? 


> 레티아 홈페이지 바로가기 


> 세계 최고의 OCR 프로그램 'ABBYY 파인리더' 무료 시험판 사용해보기 





저작자 표시 비영리 동일 조건 변경 허락
신고
블로그 이미지

OCR 전문기업 레티아 OCR전문기업 레티아

OCR프로그램, PDF변환프로그램 리뷰를 포함하여 ABBYY의 OCR엔진, 모바일, 데이터캡처 솔루션, 서버형 솔루션, 명함인식 솔루션 등 다양한 정보를 제공합니다.


ABBYY OCR SDK 샘플 프로젝트 3탄 - PDF Export 프로파일 



글로벌 점유율 및 성능 1위 OCR 전문 벤더 ABBYY 의 OCR 엔진 'ABBYY FineReader Engine 11' 본격탐구! 샘플프로젝트 시리즈 3탄입니다. 


OCR 엔진하면 어렵게 생각하시는 개발자님들이 많으실텐데요. ABBYY의 OCR 엔진은 설치 후 즉시 동작을 확인할 수 있는 쉽고 간단한 샘플프로젝트를 다양하게 제공하고 있습니다. 이 샘플프로젝트를 통해서 개발자분들께서  OCR엔진(ABBYY FineReader Engine)에 대해 좀 더 쉽게 이해하실 수 있습니다. ^^


레티아에서 알려드는 샘플 프로젝트 놓치지 마세요~ 





지난 포스팅 

1탄 - 프로세싱 프로파일 바로가기

2탄 - 멀티코어 프로세싱 바로가기





3탄 포스팅은 바로 <PDF Export 프로파일>입니다.


이 샘플프로젝트는 OCR 엔진으로 인식 후, PDF 포맷으로 저장할 때 

PDF Export 프로파일을 사용하면 어떤 장점이 있는지 보여줍니다. 


이 샘플은 특정 폴더의 이미지들을 처리한 뒤 

그 결과를 일부 파라미터가 최적화된 PDF포맷으로 저장합니다. 


(예 : 품질이 가장 좋은 파일, 가장 빠른 속도로 생성된 파일, 

파일 사이즈가 가장 작은 파일 및 모든 파라미터가 균형이 잡혔을 때 생성되는 파일 등) 



각 파일의 사이즈와 각각의 처리 속도를 비교하고, 비교 결과는 다이어그램으로 표시됩니다. 







동작하는 방식은 크게 아래의 단계로 나눠집니다. 


1. 인식할 이미지 폴더를 선택합니다.


2. 인식할 이미지의 인식언어를 선택합니다. 


3. PDF 포맷 저장의 파라미터 설정합니다. 

 

- Text export mode  :

 페이지 이미지 위에 텍스트, 

페이지 이미지 밑에 텍스트,

 이미지만 저장, 텍스트만 저장 등을 선택할 수 있습니다. 


- Colority : 

원본 이미지의 색상을 유지 또는 그레이로 저장 선택할 수 있습니다. 


- 그림 해상도 : 

원하는 해상도를 설정할 수 있습니다. 


-  압축 여부 : 

ABBYY OCR 엔진이 지원하는 고품질 MRC 압축 사용 여부를 선택할 수 있습니다. 


- PDF/A 준수 :

 PDF, PDF/A-1a, PDF/A-1b 포맷을 지원합니다. 


5. 이제 Start 버튼을 눌러 작업을 실행합니다. 


5. <파일생성시간 비교 다이어그램> 아래 각각의 저장 시나리오와 결과 밑의 

'open file' 을 눌러 결과파일을 볼 수 있습니다. 






↑유튜브 동영상 바로가기 : https://youtu.be/Ke1QhbB3-JY


좀 더 자세하게 보고싶으시다면, 데모 동영상으로 확인해보세요 ^^ 









A comprehensive OCR SDK for software developers.


More value for your software solution!!! 


시험판 신청 및 제품 소개 바로가기 

 






 

저작자 표시 비영리 동일 조건 변경 허락
신고
블로그 이미지

OCR 전문기업 레티아 OCR전문기업 레티아

OCR프로그램, PDF변환프로그램 리뷰를 포함하여 ABBYY의 OCR엔진, 모바일, 데이터캡처 솔루션, 서버형 솔루션, 명함인식 솔루션 등 다양한 정보를 제공합니다.



ABBYY OCR SDK 샘플 프로젝트 2탄 - 멀티코어 프로세싱 




최고의 성능을 자랑하는 OCR 전문 개발엔진

 'ABBYY FineReader Engine 11' 의 기능에 대해 알아보겠습니다. 

1탄에서는 프로세싱 프로파일을 알아보았는데요 1탄 바로가기 







ABBYY FineReader Engine 11은 

세계최고의 글로벌 OCR 밴더 ABBYY사의 

OCR 소프트웨어 개발 툴킷입니다. 








ABBYY FineReader Engine 11은 

설치 후 즉시 동작을 확인할 수 있는 

다양한 샘플 프로젝트를 제공하고 있는데요~ 


이번 글에서는 여러개의 샘플프로젝트 중 2탄 

<멀티코어 프로세싱>을 소개합니다. ^^ 

 

이 샘플은 싱글 프로세스로 문서를 인식할때와 비교해서 여러개의 인식 프로세스로

멀티 페이지 문서를 인식할때 얼마나 속도가 빨라지는지 보여줍니다. 







인식을 위해서는 FineReader Document 객체의 메소드를 사용하게 됩니다. 

 이때 


- 이미지 파일들은 특정 위치로부터 FineReader  Document 객체에 하나씩 차례로 추가됩니다.

- 모든 이미지가 추가되었을때 병렬 인식이 시작됩니다.

- 모든 페이지가 인식된 다음, 문서 전체의 결과에 접근이 가능하게 됩니다. 






스크린샷에서 보시는 것처럼 싱글프로세스 처리 시 보다 

멀티프로세싱 인식을 수행할 때 속도가 빠른 것을 알 수 있습니다 






* 참고사항 

Core2 Duo T9800, 2,9 GHz, Windows 7, 4 GB RAM 32bit이 탑재된 PC에서 동작하였습니다. 

샘플이미지는 ABBYY FineReader 엔진 설치 시 저장되는 이미지를 사용하였습니다. 







좀 더 자세하게 설명해드릴게요~ 

샘플은 특정 폴더로부터 문서를 처리하고 
필요한 경우 PDF 포맷으로 결과를 저장합니다. 

또, 싱글 쓰레드로 처리 할 때와 병렬 쓰레드 사용시의 속도를 비교하며, 
결과는 다이어그램으로 보여줍니다. 

동작 방식은 다음과 같습니다. 



1. 인식 이미지들이 있는 폴더를 선택합니다.  

2. 처리할 문서의 인식 언어를 설정합니다.

3. 테스트에 사용할 CPU 코어 수를 설정합니다. 기본 설정은 가능한 최대 수의 코어 와 같습니다. 
코어 하나에 대한 테스트는 자동으로 기록됩니다.

4. 텍스트로 저장할 지 설정합니다. 
결과를 저장하면 처리에 필요한 모든 과정(Analysis, Recognition, Synthesis, Export)에 걸리는 시간이 모두 측정됩니다. 
결과를 저장하지 않으면 Analysis와Recognition 시간만 측정이 됩니다. 

5. “Start”를 클릭해서 샘플을 동작시킵니다.





아직 잘 모르시겠다면 데모 동영상으로 확인하실 수 있습니다. 

 


레티아 유튜브 동영상 바로가기 





본 SDK 제품의 소개자료가 필요하시거나, 시험판을 원하실 경

레티아 홈페이지의 SDK 제품 소개 페이지를 방문해주세요! 


바로가기 






저작자 표시 비영리 동일 조건 변경 허락
신고
블로그 이미지

OCR 전문기업 레티아 OCR전문기업 레티아

OCR프로그램, PDF변환프로그램 리뷰를 포함하여 ABBYY의 OCR엔진, 모바일, 데이터캡처 솔루션, 서버형 솔루션, 명함인식 솔루션 등 다양한 정보를 제공합니다.