초보자를 위한 광학 문자 인식(OCR) 소개

게시 됨: 2021-02-08

OCR 또는 광학 문자 인식(OCR)은 청구서 및 영수증의 이미지 또는 내용이 기록된 모든 것에서 정보를 추출하는 데 사용됩니다. 이 솔루션을 개발하기 위해 OpenCV를 사용하여 이미지에서 텍스트를 추출할 수 있는 Tesseract OCR 엔진에 추가로 공급할 수 있는 이미지를 처리할 수 있습니다.

그러나 텍스트 제거 프로세스는 이미지가 깨끗하고 텍스트가 충분히 보이는 경우에만 효율적일 수 있습니다. 소매 응용 프로그램에서 송장에서 텍스트를 추출하기 위해 송장에 워터마크가 범람하거나 정보를 캡처하는 데 방해가 되는 계산서에 그림자가 있을 수 있습니다.

긴 텍스트 페이지에서 정보를 캡처하는 것도 힘든 작업일 수 있습니다. 이러한 문제를 해결하기 위해 정보 추출 파이프라인에서 앞서 언급한 어려움을 처리하는 이미지 처리 모듈의 위치가 있는 것이 현명합니다.

이것은 텍스트의 현지화, 문자 분할 및 해당 문자의 인식과 같은 여러 하위 프로세스로 구성됩니다. 세분화 없이 관리하는 시스템은 거의 없습니다. 이러한 방법은 최소 자승법을 적용하여 오류율을 줄이고 벡터 머신을 지원하여 문자를 일치시키는 것과 같은 여러 절차를 사용하여 생성됩니다.

그러나 이미지에서 캐릭터의 점유를 식별하기 위해 종종 CNN(Convolutional Neural Networks)이 사용됩니다. 텍스트는 일관된 문자 시퀀스로 볼 수 있습니다. 이러한 문자를 보다 정확하게 감지하고 식별하는 것은 특수 유형의 신경망, 즉 순환 신경망(RNN) 및 장기 단기 기억(LSTM)을 사용하여 해결할 수 있는 어려움입니다.

텍스트를 얼룩으로 조정하여 단어를 수집합니다. 또한 이러한 라인과 영역은 동등한 텍스트에 대해 검사됩니다. 텍스트 줄은 간격의 종류에 따라서만 단어로 나뉩니다. 식별 방법은 두 단계로 나뉩니다. 먼저 각 단어를 식별합니다. 모든 완벽하거나 올바르게 식별된 단어는 훈련 데이터로 적응 분류기에 추가로 전달됩니다.

입력으로 받은 이미지를 부분적으로 검사하여 처리합니다. 텍스트는 LSTM 모델에 한 줄씩 입력됩니다. 광학 문자 인식 엔진인 Tesseract는 다양한 운영 체제에서 사용할 수 있습니다. CNN과 LSTM 아키텍처의 조합을 사용하여 이미지 데이터에서 텍스트를 정확하게 식별하고 파생합니다. 그러나 노이즈나 그림자가 있는 이미지는 검색 정확도를 방해합니다.

노이즈를 최소화하거나 이미지 품질을 향상시키기 위해 OpenCV 라이브러리를 사용하여 이미지의 전처리를 수행할 수 있습니다. 이러한 사전 처리 단계는 ROI 또는 관심 영역 발견, 이미지 자르기, 노이즈(또는 원하지 않는 영역) 제거, 임계값 지정, 팽창 및 침식, 윤곽 또는 가장자리 감지를 포함할 수 있습니다. 이러한 단계가 완료되면 OCR 엔진이 이미지를 읽고 이미지에서 관련 텍스트를 완벽하게 추출할 수 있습니다.

목차

사용 도구

1. 오픈CV

OpenCV는 원래 C/C++ 및 Python 언어와 호환되는 라이브러리입니다. 이미지 샘플로 데이터를 처리하는 데 일반적으로 사용됩니다. 이미지 샘플에 필요한 변환을 구현하는 라이브러리에는 미리 정의된 유용한 기능이 많이 있습니다. 팽창, 침식, 슬라이싱, 에지 감지 등과 같은 앞서 언급한 모든 기능은 이 라이브러리를 사용하여 쉽게 수행할 수 있습니다.

2. 테서랙트 OCR 엔진

Google에서 출시한 텍스트 인식에 널리 사용되는 오픈 소스 라이브러리입니다. 다양한 언어로 된 텍스트를 감지하고 식별하는 데 사용할 수 있습니다. 처리는 매우 빠르며 이미지의 텍스트 출력을 거의 즉시 제공합니다. 많은 스캐닝 응용 프로그램이 이 라이브러리를 활용하고 추출 기술에 의존합니다.

텍스트 추출 프로세스와 관련된 단계

(1) 첫째, 윤곽 검출, 노이즈 제거, 침식 및 팽창 기능과 같은 가능한 이미지 처리 기술이 노이즈가 많은 이미지 샘플에 적용됩니다.

(2) 이 단계가 끝나면 지폐에서 워터마크와 그림자가 제거됩니다.

(3) 또한, 법안은 부분으로 분할됩니다.

(4) 분할된 부분은 Tesseract OCR 엔진을 통해 전달되어 완전한 텍스트를 얻습니다.

(5) 마지막으로 Regex를 사용하여 총 금액, 구매 날짜 및 항목당 비용과 같은 모든 필수 정보를 얻습니다.

송장 및 청구서와 같은 텍스트가 있는 특정 이미지에 대해 이야기하겠습니다. 그들은 일반적으로 지폐를 발행하는 대부분의 회사에 워터마크가 있습니다. 앞서 언급했듯이 이러한 워터마크는 효율적인 텍스트 추출을 방해합니다. 종종 이러한 워터마크 자체에 텍스트가 포함됩니다.

Tesseract 엔진은 한 줄에 있는 모든 크기의 텍스트를 인식하므로 노이즈로 간주할 수 있습니다. 워터마크와 마찬가지로 그림자도 텍스트를 효율적으로 추출하기 위한 엔진의 정확도를 저해합니다. 이미지의 대비와 밝기를 향상시켜 그림자를 제거합니다.

스티커나 워터마크가 있는 이미지의 경우 다단계 프로세스가 수행됩니다. 이 프로세스에는 이미지를 회색조로 변환하고, 형태학적 변환을 적용하고, 임계값을 적용하고(이진 반전 또는 오츠 변환이 가능), 더 어두운 영역에서 더 어두운 픽셀을 추출하고, 마지막으로 워터마크 영역에서 더 어두운 픽셀을 붙여넣는 작업이 포함됩니다. 그림자 제거 과정으로 돌아갑니다.

먼저 회색조 이미지에 팽창을 적용합니다. 이 위에 적절한 커널이 있는 중간 파란색은 텍스트를 억제합니다. 이 단계의 출력은 존재하는 그림자 및 기타 변색 부분이 포함된 이미지입니다. 이제 원본 이미지와 얻은 이미지 간에 간단한 차분 연산이 계산됩니다. 마지막으로 임계값을 적용하면 그림자가 없는 이미지가 생성됩니다.

텍스트 인식 및 추출

Convolutional Neural Network 모델은 이미지에서 발견된 각인된 텍스트에 대해 구축되고 훈련될 수 있습니다. 이 모델은 동일한 글꼴을 가진 다른 유사한 이미지에서 텍스트를 감지하는 데 추가로 사용할 수 있습니다. Tesseract OCR 엔진은 컴퓨터 비전 알고리즘을 사용하여 처리된 이미지에서 텍스트를 복구하는 데 사용됩니다.

광학 문자 인식을 위해서는 텍스트 현지화를 수행한 다음 문자 분할을 수행한 다음 문자를 인식해야 합니다. 이 모든 단계는 Tesseract OCR에 의해 수행됩니다. Tesseract OCR 엔진은 손으로 쓴 텍스트가 아닌 인쇄된 텍스트에 사용할 때 매우 정확합니다.

관련 정보 얻기

특히 인보이스에 대해 이야기하면 추출된 모든 텍스트 중에서 구매 날짜, 총액 등과 같은 중요한 정보를 여러 정규식을 사용하여 쉽게 얻을 수 있습니다. 인보이스에 표기된 총액은 일반적으로 인보이스 끝에 나타나므로 정규식을 적용하여 추출할 수 있습니다. 이러한 유용한 정보 중 많은 부분이 날짜별로 저장되어 쉽게 액세스할 수 있습니다.

정확성

텍스트 검색의 정확도는 Tesseract OCR에 의해 확보되고 이미 청구서에 있는 정확한 정보 수와 텍스트 이미지에 실제로 존재하는 누적 단어 수의 비율로 정의할 수 있습니다. 정확도가 높을수록 사전 처리 기술의 효율성이 높아지고 Tesseract OCR이 정보를 추출하는 능력이 향상됩니다.

다음은?

기계 학습에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT- B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

세계 최고의 대학에서 ML 과정배우십시오 . 석사, 이그 제 큐 티브 PGP 또는 고급 인증 프로그램을 획득하여 경력을 빠르게 추적하십시오.

AI 주도 기술 혁명 주도

기계 학습 및 NLP 고급 인증 프로그램 신청