이 장에서는 C#에서 가장 많이 쓰이는 OCR 3가지를 사용해서 비교해보도록 하겠습니다. 앞으로의 장에서는 딥러닝으로 직접 구현하는 방법도 소개하겠습니다.
먼저 ocr이 먼지를 모르는 분들을 위해 OCR(Optical character recognition)이란?
광학식 문자판독이라는 방법으로 보통 컴퓨터가 0과 1로 구성된 데이터를 폰트를 통해 사람이 인식할 수 있는 문자로 보여준다면, ocr(optical character recognition)은 반대로 사람이 쓴 문자나 책과 같은 활자로 표시된 것을 컴퓨터가 카메라로 인식하여 컴퓨터의 0과 1로 구성된 텍스트 데이터로 변환해주는 것이다. 이것이 딥러닝 기법이 많이 사용되는 요즘에는 인식률이 매우 높아졌다. 이전에 단순히 텀플 매칭으로 학습한 결과로, ocr을 했을 때는 결과가 너무 좋지 않아 잘 사용하지 않았지만 최근 딥러닝을 활용해 점점 더 많이 활용되는 추세다.
당연히 기존 학습한 데이터를 위해 기존 컴퓨터에 있는 폰트로 인쇄한 문서라면 훨씬 인식이 잘 된다. 손글씨는 아무래도 인식률이 특이한 손글씨일수록 떨어지지만 그래도 딥러닝 학습 데이터가 많은 언어의 경우 그럭저럭 뛰어나다. ==>영어는 거의 99.5% 정도 제대로 인식되고 있다고 하는데, 이것도 실시간으로 움직이는 곳에서는 잘 되지 않는다.
딥 러닝에서 객체를 데텍팅하고 문자가 있는 곳을 판별하고부터 OCR하지 않는 한 잘 안 된다열심히 학습하고 다양하게 흔들리는 각도도 학습을 많이 해야 한다제대로 인식하기 위해서는 특히 한글의 경우는 최근 네이버 같은 곳으로 열심히 하고는 있지만, 아무래도 서양 쪽에 비해서 연구 인력도 작은 데이터도 적어 높은 해상도로 스캔된 문서가 아닌 이상 문자 오차율이 터무니 없다.특히 손 글씨는 거의 잘 없다고 봐도 무방하다.해외에서 가장 유용한 OCR은 아무래도 구글 번역 앱에 있는 OCR기능이다.휴대 전화 카메라로 비추면 문자를 인식하고 데이터로 바꾼 뒤, 번역까지 한다.그럼 대충 ocr의 개념에 대해서 배웠으니 c형으로 어떻게 구현하는지 봅시다.우선 이번 장에서 ocr의 라이브러리 3개를 응용하고 사용하는 방법을 봅니다.OCR사용하기 Aspose-OCR/IronOCR/Tesseract-OCR
딥 러닝으로 객체를 디텍팅하여 문자가 있는 곳을 판별한 후 OCR하지 않는 한 잘 되지 않는다 열심히 학습하고 다양하게 흔들리는 각도도 학습을 많이 해야 한다 제대로 인식하기 위해서는 특히 한글 같은 경우는 요즘 네이버 같은 곳에서 열심히 하고는 있지만 아무래도 서양 쪽에 비해서 연구 인력도 작고 데이터도 적기 때문에 높은 해상도로 해서 스캔된 문서가 아닌 이상 오율이 엄청나다. 특히 손글씨는 거의 잘 안 된다고 봐도 무방하다. 해외에서 가장 유용한 OCR은 아무래도 구글 번역 앱에 있는 OCR 기능이다. 휴대전화로 카메라로 비추면 문자를 인식해 데이터로 바꾼 뒤 번역까지 해준다.그러면 대략적으로 ocr의 개념에 대해서 알아봤으니까 c#로 어떻게 구현할 것인지 한번 알아보도록 하겠습니다.먼저 이번 장에서 ocr의 라이브러리 3가지를 응용하여 사용하는 방법을 알아보겠습니다. OCR 사용하기Aspose-OCR / IronOCR / Tesseract-OCR
그 후 기존의 학습된 데이터를 다운로드하여 압축을 푼 후 debug 폴더에 tessadata라는 폴더에 넣는다.
위에 가서 소스코드 다운받으면 돼.밑에는 푸는 위치.
그 다음 디자이너에게 버튼을 오늘 테스트할 3가지 API를 모두 만들어 놓는다. 그리고 실시간 영상으로 분석할 수 있는 컴퓨터 사양이 되지 않기 때문에 richTextBox를 하나 만들어서 거기에 ocr로 문자 인식한 데이터를 넣는다. 라이브러리 사용도 다 해놓고.
앞 장에서 진행한 실시간 영상을 가져오는 부분에 만들면 된다. 지난번에 못 보신 분들은 아래 링크로 들어가셔서 보시면 됩니다.
그 다음 버튼에 이벤트를 주고 실시간 영상이 picturebox 1로 출력되는 것을 바로 불러온다.private void buttonTesseract_Click(object sender, EventArgs e) { Bitmap oc = (Bitmap)pictureBox1.Image; ocr=OcrProcess(oc); richTextBox1.BeginInvoke(new MethodInvoker(delegate { richTextBox1.Text = ocr; })); }
예를 들어 한국어를 말하고 싶다면 Engine 초기화할 때 kor를 넣으면 된다. varengine=newTesseractEngine(@”./tessdata”, “kor”, EngineMode.TesseractOnly); 상기 방법으로 수행하면,
위와 같이 대충 카메라로 책을 비추면 글자를 인식하게 된다 물론 굴곡도 많고, 대부분 영상이라서 정확하게는 할 수 없는 제대로 하려면 책을 활짝 펴서 왜곡도 덜 하고 찍어야 한다.2. IronOCR 시카고에 설립된 Iron Software LLC라는 회사에서 만든 c#전용 라이브러리로 2013년부터 시작된 회사이다. 설명도 아주 잘 되어 있고 사용도 아주 편리하기 때문에 어떻게 보면 c#에서 가장 많이 사용하게 된다. 단지, 판매 목적의 상업용에서는 유료로 개발은 무료가 되지만, 가격이 높지는 않다. 가격은 회사 단위 또는 종류가 많은데 가격대는 399달러부터 2499달러까지다. 개발하고 테스트하는 게 무료라 많이 쓸 수밖에 없어. 업데이트도 주기적으로 자주 이뤄진다.
설치 방법도 간단하다. NGet 패키지로 검색해 설치하면 되는데, IronOCR 기본 패키지는 영어로만 각각 언어에 대한 패키지가 따로 있다.
한국어까지 포함되어 있으니 설치하고 테스트해보세요.관련 문서가 홈페이지에 아주 직관적으로 잘 되어 있어 사용하기 편하다.앞으로 버튼을 클릭했을 때 아래와 같이 이벤트를 등록하면 된다.
상세 옵션은 영어만 읽을 수 있으면 돼.이제부터 실행을 하면,3. Aspose-OCR끝에 시험하고 보면 라이브러리는 Aspose-ocr이다.이 회사는 코드 포팅에서 클라우드까지 포괄적으로 많은 것을 하는 회사여서 ocr알고리즘이 가격 대비 성능이 좋지 않지만 선택한 이유는 단 하나 GPU연산이 가능하다는 것이다당연히 nividia의 cuda연산이다.amd계의 그래픽 카드를 가진 분은 테스트되지 않아 그대로 cpu버전을 설치하게 부탁합니다.cuda의 세팅도 있고, nividia그래픽 카드가 설치되어 있는 분은 aspose-ocr-gpu버전으로 테스트하고 보는 것이 빨라진다.Aspose사의 장점은. net, java, c++, android via java, Xamarin등 많은 플랫폼을 지원하는 데 큰 회사라서 이런 저런 레포팅 서비스까지 제공하기 때문.그런 것도 필요한 분은 골라야 하네.다른 언어로 되어 이행이 아주 편한 거이다!!!단점으로는 개발하고 테스트하고 보는데도 무료 버전이라고 해서 결과치도 제대로 유도가 도중에 정지되므로 성능이 어느 정도인지 확실히 알지 못한다.OCR만 하면 가격은 괜찮을.이 회사는 너무도 파는 것이 많아서, total에서 구입도 가능하지만 터무니 없어서 원.다만 ocr뿐 사서 쓰고 보는 것도 좋다(iron값이 부담이 되기 때문)가격대는 이론OCR이 최소 399에서 2499까지 가는 것에 비하면 이곳은 단돈 399달러이다. 가격은 이쪽이 훨씬 합리적이다.(자바와 c++도 사용해도 599달러이면 되니까) 사용법은 비슷하지만 단점은 그림 파일이나 memstream 형식만 읽고 변환을 한번 해야 하는 것이 단점이긴 하다.(그리고 결과값이 다 나오면…)실행하면, 이하와 같은 결과를 도출한다.GPU 버전이기 때문에 처음 실행만 조금 느리고 결과는 빠르게 도출할 수 있다.Aspose-OCR 결론적으로 총평을 하면, 결과는 ironOCR>= Aspose > Tesseract이며 가격은 Tesseract(무료) > Aspose (399달러) >= ironOCR (최대 2499달러) 이다. 개인적으로 하나만 선택한다면 무조건 Aspose를 사용하고 제한된 범위에서 쓰기 위해서는 오직 딥러닝에서 직접 알고리즘을 사용하여 한다. 범용성으로서는 aspose가 좋다고 생각한다.따라서 가격대비 경쟁력은 Aspose를 다만, 한국어를 제대로 할 수 없음 여기는 ironOCR을 써.한국어를 쓰려면..Tesseract 사용한다던가Aspose-OCR 결론적으로 총평을 하면, 결과는 ironOCR>= Aspose > Tesseract이며 가격은 Tesseract(무료) > Aspose (399달러) >= ironOCR (최대 2499달러) 이다. 개인적으로 하나만 선택한다면 무조건 Aspose를 사용하고 제한된 범위에서 쓰기 위해서는 오직 딥러닝에서 직접 알고리즘을 사용하여 한다. 범용성으로서는 aspose가 좋다고 생각한다.따라서 가격대비 경쟁력은 Aspose를 다만, 한국어를 제대로 할 수 없음 여기는 ironOCR을 써.한국어를 쓰려면..Tesseract 사용한다던가Aspose-OCR 결론적으로 총평을 하면, 결과는 ironOCR>= Aspose > Tesseract이며 가격은 Tesseract(무료) > Aspose (399달러) >= ironOCR (최대 2499달러) 이다. 개인적으로 하나만 선택한다면 무조건 Aspose를 사용하고 제한된 범위에서 쓰기 위해서는 오직 딥러닝에서 직접 알고리즘을 사용하여 한다. 범용성으로서는 aspose가 좋다고 생각한다.따라서 가격대비 경쟁력은 Aspose를 다만, 한국어를 제대로 할 수 없음 여기는 ironOCR을 써.한국어를 쓰려면..Tesseract 사용한다던가