PDF 용 OCR

소스 노드 : 879686

개요

1970 년대에 컴퓨터가 널리 사용 된 후 1993 년에 PDF가 발명 된 이래로 텍스트 파일을 디지털 형식으로 저장하는 것은 점진적으로 그러나 꾸준히 전통적인 종이를 지배하고 있습니다. 이 타의 추종을 불허하는 에지는 디지털 텍스트 파일을 몇 초 만에 전세계로 쉽게 전송할 수있는 인터넷의 편리함을 히치 하이킹함으로써 만들어지고 더욱 향상되었습니다. 오늘날 기계로 인코딩 된 텍스트는 PDF를 통해 저장 및 공유 될뿐만 아니라 수기 문서의 종이도 추가 처리 및 배포를 위해 이러한 형식으로 스캔됩니다.

그러나 이러한 새로운 추세는 현재 진행중인 새로운 연구 영역 인 PDF OCR (Optical Character Recognition)에 대한 빛을 발산했습니다. OCR은 스캔하거나 손으로 쓴 텍스트를 기계 인코딩 된 텍스트로 변환하는 프로세스로, 프로그램에서 추가 처리 및 분석을 위해 사용할 수 있습니다. OCR의 적용은 광범위하지만 (도로 표지판 이미지에서 공식 텍스트 문서에 이르기까지),이 기사는 특히 PDF OCR의 영역, 특히 스캔 및 손으로 쓴 종이의 PDF에 대해 자세히 설명하고이를 수행하기 위해 다양한 언어로 기술 및 프로그램을 논의합니다. 직무. PDF OCR을위한 여러 시장 내 소프트웨어에 대한 자세한 개요 및 비교는 참조를 위해 추가로 제공됩니다.


PDF에서 정보를 추출하는 OCR 솔루션을 찾고 계십니까? 나노 넷 제공더 높은 정확도, 더 큰 유연성, 후 처리 및 광범위한 통합을위한 스핀!


OCR 솔루션의 발전

OCR의 코드, 세부 사항 및 이점을 논의하기 전에 먼저 관련 기술의 발전을 소개하여 OCR 작동 방식의 개념을 설명합니다.

기존 OCR

추가 계산을위한 스캔 문서의 전자 변환은 이러한 작업에 필요한 정확도를 충족하는 딥 러닝 이전에 일반적으로 간단한 XNUMX 단계로 수행됩니다.

  1. 알려진 문자의 데이터베이스를 수집합니다.
  2. 포토 센서를 사용하여 스캔 한 문서에서 개별 문자를 수집하고 분리합니다.
  3. 광 센서에서 검색된 속성 세트를 데이터베이스의 물리적 속성과 비교합니다.
  4. 그에 따라 각 속성 집합을 가장 유사도가 높은 알려진 문자로 변환합니다.

전통적인 접근 방식은 대부분의 경우 효과적인 것으로 보이지만 고유 한 규칙 기반 제한에 취약합니다. OCR의 중요한 중간 단계 중 하나는 텍스트 세트 / 그룹에서 단일 문자 또는 기호를 성공적으로 추출하는 것입니다. 이 추출은 정확도를 높이기 위해 특정 템플릿 또는 규칙 (예 : 사전 설정된 글꼴 크기 / 스타일)이 필요합니다. 정확성을 높이기 위해 점점 더 많은 규칙을 부과하면 OCR 과적 합의 딜레마가 발생하거나 특정 스타일의 글에만 수정됩니다. OCR이 완전히 규칙 기반 일 때 스캔 프로세스 중 조명의 불일치로 인해 오류가 발생할 수도 있습니다.

또한 손글씨를 다룰 때 규칙 기반 속성 비교도 부족합니다. 컴퓨터 생성 글꼴은 대부분 명확하고 상호 비교하기 쉬운 속성으로 고정되어 있습니다. 손으로 쓴 글꼴은 정반대이며 무한한 변형이 있으므로 분류하기가 훨씬 더 어렵습니다. 손으로 만든 캐릭터는 매번 약간 씩 다르기 때문에 이들 모두를 데이터베이스의 일부로 포함하는 것도 불가능합니다. 이를 위해서는 OCR이 순진한 속성 일치 외에 더 정교한 알고리즘을 수행해야하는 경우가 많습니다.

마지막으로, 다국어의 장벽은 전통적인 접근 방식에도 존재합니다. 많은 언어가 유사하거나 심지어 동일한 기호를 채택합니다. 모든 기호를 데이터베이스에 저장하면 단순히 속성 일치를 수행하는 것만으로는 두 기호의 차이를 구분할 수 없기 때문에 궁극적으로 기존 접근 방식은 모델 당 하나의 언어로 제한되는 경우가 많습니다.

최근의 딥 러닝 시대에 비추어 볼 때 빠르게 성장하는 하드웨어 계산 기능으로 인해 고맙게도 새로운 OCR은 텍스트를 추출하는 과정과 해석 단계에서 학습 모델을 통합했습니다.

딥 러닝 기반 OCR 엔진

머신 러닝 영역의 주요 분야 인 딥 러닝은 수많은 저명한 과학자들의 도움으로 큰 인기를 얻었습니다. 전통적인 엔지니어링에서 우리의 목표는 주어진 입력에서 출력을 생성하는 시스템 / 기능을 설계하는 것입니다. 반면에 딥 러닝은 입력과 출력에 의존하여 소위를 통해 새로운 보이지 않는 데이터로 확장 될 수있는 중간 관계를 찾습니다. 신경망.

신경망 아키텍처

신경망 또는 다층 퍼셉트론은 인간의 두뇌가 학습하는 방식을 모방합니다. 네트워크 내부의 각 노드, 즉 뉴런은 "활성화"할 정보를 수신하는 생물학적 뉴런과 같습니다. 뉴런 세트는 계층을 형성하고 여러 계층이 쌓여 네트워크가되어 정보를 사용하여 예측을 생성합니다. 예측은 분류 문제에 대한 클래스 예측에서 물체 감지 작업의 항목 경계 상자에 이르기까지 모든 형태가 될 수 있습니다.이 모든 것은 이전 문헌에 비해 최첨단을 이룹니다. OCR 작업에서는 두 가지 유형의 네트워크와 함께 두 가지 유형의 출력이 크게 적용됩니다.

  • 컨볼 루션 신경망 (CNN) – CNN은 특히 컴퓨터 비전 영역에서 오늘날 사용되는 가장 지배적 인 네트워크 집합 중 하나입니다. 기능을 추출하기 위해 이미지를 슬라이드하는 다중 컨벌루션 커널로 구성됩니다. 마지막에 기존 네트워크 계층과 함께 CNN은 주어진 이미지에서 특징을 검색하여 예측을 수행하는 데 매우 성공적입니다. 이 프로세스는 OCR 프로세스에서 추가 분류를 위해 경계 상자를 찾고 문자의 속성을 감지하는 작업으로 더 옮겨 질 수 있습니다.
  • 장기 단기 기억 (LSTM) – LSTM은 주로 시퀀스 입력에 적용되는 네트워크 제품군입니다. 직관은 간단합니다. 모든 순차적 데이터 (예 : 날씨, 주식)에 대해 새로운 결과는 이전 결과에 크게 의존 할 수 있으므로 새로운 예측을 수행 할 때 입력 기능의 일부로 이전 결과를 지속적으로 피드 포워드하는 것이 좋습니다. . OCR의 경우 이전에 감지 된 문자는 다음을 예측하는 데 큰 도움이 될 수 있습니다. 문자 집합은 일반적으로 조합 할 때 의미가 있어야합니다 (예 : 영어 문자 "g"가 "do"다음에 올 가능성이 더 높기 때문). 유사한 속성에도 불구하고 숫자 "9"보다).

딥 러닝을 통합하는 OCR의 주요 작업 외에도 규칙 기반 접근 방식을 제거하기위한 많은 전처리 단계도 번성하는 신경망 기술의 수혜자였습니다.

  • 노이즈 제거 – 문서를 잘못 스캔하면 규칙 기반 방법이 쉽게 부족할 수 있습니다. OCR 기술에서 채택한 최근 접근 방식은 입력을 "감소"하기 위해 GAN (Generative Adversarial Network)을 적용하는 것입니다. GAN은 생성기와 판별 기의 두 개의 네트워크로 구성됩니다. 생성기는 식별기가 실제 입력과 생성 된 입력을 구별 할 수 있도록 지속적으로 새로운 입력을 생성하여 생성기가 이상적인 콘텐츠를 지속적으로 개선 할 수 있도록합니다. 이 경우 GAN은 노이즈가 제거되고 노이즈가있는 한 쌍의 문서에서 학습되며 생성기의 목표는 가능한 한 실제 사실에 가까운 노이즈 제거 문서를 생성하는 것입니다. 응용 프로그램 단계에서 잘 훈련 된 경우 GAN을 모든 입력에 사용하여 잘못 스캔 된 문서를 미세 조정할 수 있습니다.
  • 문서 식별 – OCR 작업, 특히 PDF의 OCR 작업은 양식 및 문서에서 데이터를 적절하게 추출하기 위해 자주 사용됩니다. 따라서 OCR 시스템이 현재 처리중인 문서 유형을 알면 데이터 추출의 정확도가 크게 향상 될 수 있습니다. 최근 예술은 문서를 기존 문서 형식과 비교하기 위해 Siamese 네트워크 또는 비교 네트워크를 통합하여 OCR 엔진이 문서 분류를 미리 수행 할 수 있도록합니다. 이 추가 단계는 텍스트 검색의 정확성을 향상시키기 위해 경험적으로 입증되었습니다.

요약하면, OCR의 발전은 하드웨어 기능과 딥 러닝의 기하 급수적 인 성장으로 인해 많은 이점을 얻었습니다. PDF OCR은 이제 수많은 응용 프로그램에 대한 놀라운 표준에 대한 정확도를 달성했습니다.


PDF에서 정보를 추출하는 OCR 솔루션을 찾고 계십니까? 나노 넷 제공더 높은 정확도, 더 큰 유연성, 후 처리 및 광범위한 통합을위한 스핀!


PDF OCR 소프트웨어의 응용

OCR의 주요 목표는 숫자 든 실제 숫자 든 구조화되지 않은 형식에서 데이터를 검색하는 것입니다. 검색이 성공적이고 매우 정확하다면 프로그램은 텍스트 인식 및 해석과 같은 노동 작업, 특히 수치 및 상황 분석을 위해 OCR을 활용할 수 있습니다.

수치 데이터 분석

PDF에 숫자 데이터가 포함 된 경우 OCR은 통계 분석을 수행하기 위해 추출하는 데 도움이됩니다. 특히 테이블 또는 KVP (키-값 쌍) 추출을 사용하는 OCR을 적용하여 주어진 텍스트의 다른 영역에서 의미있는 숫자를 찾을 수 있습니다. 그런 다음 다양한 응용 프로그램의 모델에 통계 또는 기계 학습 방법 (예 : KNN, K- 평균, 선형 / 로지스틱 회귀)을 채택 할 수 있습니다.

텍스트 데이터 해석

반면에 텍스트 데이터 처리에는 프로그램이 단어 뒤에있는 "의미"를 이해하기위한 궁극적 인 목표와 함께 더 많은 계산 단계가 필요할 수 있습니다. 텍스트 데이터를 의미 론적 의미로 해석하는 이러한 프로세스를 NLP (Natural Language Processing)라고합니다.

PDF OCR의 이점

PDF OCR은 응용 프로그램 수준에서 다양한 용도로 사용됩니다. 다음 섹션에서는 개인용에서 기업용까지의 몇 가지 사용 사례에 대해 설명합니다.

개인 사용 사례

PDF OCR은 ID 스캔 및 개인 자금 조달과 같은 성가신 작업을 처리 할 때 매우 편리합니다.

개인 ID는 종종 PDF 형식으로 변환하여 다양한 애플리케이션으로 전송해야합니다. 이러한 식별 문서에는 다양한 목적을 위해 반복적으로 입력해야하는 생년월일 및 ID 번호와 같은 정보가 포함되어 있으므로 ID 전체에서 일치하는 필드와 해당 값을 찾는 매우 정확한 PDF OCR이 좋습니다. 사소한 수동 작업 수행에 도움이됩니다. 필요한 유일한 노동은 불일치를 다시 확인하는 것입니다.

개인 자금 조달은 엄청난 수작업이 필요한 또 다른 프로세스입니다. 엑셀 및 스프레드 시트의 개발은 이미 개인 예산 책정과 같은 작업을 용이하게했지만 OCR 및 PDF 송장의 데이터 추출은 프로세스를 더욱 가속화 할 수 있습니다. 이 데이터는 수행 할 이전 섹션에서 언급 한대로 분석을 위해 자동으로 스프레드 시트에 넣을 수 있습니다. 더 나은 재정 계획을 생각할 때 원래의 키-인 시간을 쉽게 활용할 수 있습니다.

비즈니스 사용 사례

대기업과 소규모 조직은 모두 노동 집약적이지만 비생산적인 유사한 형식을 따르는 수천 개의 문서 작업을 처리해야합니다 (즉, 모든 노동력이 브레인 스토밍이 덜 필요한 작업에 사용됩니다). 자동화 된 문서 분류 및 조사 수집 / 분석은 OCR이 유용한 곳입니다.

OCR을 사용하면 컴퓨터에서 스캔 한 텍스트를 기계 인코딩 된 텍스트로 변환 할 수 있습니다. 변환 된 텍스트의 내용은 다른 역할에 대한 응용 프로그램이든 승인을 기다리는 양식이든 관계없이 문서를 분류하는 데 사용할 수 있습니다. 잘 훈련 된 경우 OCR은 불가피한 인간의 피로로 인해 빈번하게 발생할 수있는 최소한의 오류로 이어질 수 있습니다. 비즈니스 관점에서 보면 노동 지출도 크게 줄어들 수 있습니다.

조직에서 현재 제품 또는 계획을 개선하기 위해 종종 요구하는 설문 조사 또는 피드백 측면에서 OCR도 중요한 역할을합니다. 통계 분석을 위해 데이터를 신속하게 추출하고 광범위하게 평가할 수 있습니다. 잘 설계된 경우 손으로 쓴 텍스트도 자동으로 추출하여 분석 할 수 있습니다.


PDF에서 정보를 추출하는 OCR 솔루션을 찾고 계십니까? 나노 넷 제공더 높은 정확도, 더 큰 유연성, 후 처리 및 광범위한 통합을위한 스핀!


간단한 튜토리얼

PDF OCR은 실제로 개인적으로 쉽게 프로그래밍 할 수 있습니다. 다음은 PDF에서 OCR을 수행하는 간단한 파이프 라인입니다.

PDF를 이미지로 변환

사전 훈련 된 OCR을 지원하는 여러 언어로 된 수많은 라이브러리와 API가 있습니다. 그러나 대부분은 PDF가 아닌 이미지로 처리됩니다. 따라서 다음 단계를 단순화하기 위해 문자 인식을 수행하기 전에 PDF를 이미지 형식으로 사전 처리 할 수 ​​있습니다.

이를 위해 가장 일반적으로 사용되는 라이브러리 중 하나는 pdf2이미지 다음 명령을 통해 간단히 설치할 수있는 Python 용 라이브러리 :

pip install pdf2image

나중에 라이브러리를 가져 와서 두 줄의 코드 중 하나를 사용하여 다음과 같이 PIL 형식의 이미지를 가져올 수 있습니다.

from pdf2image import convert_from_path, convert_from_bytes
from pdf2image.exceptions import ( PDFInfoNotInstalledError, PDFPageCountError, PDFSyntaxError
) images = convert_from_path('/home/belval/example.pdf')
images = convert_from_bytes(open('/home/belval/example.pdf','rb').read())

코드에 대한 자세한 내용은 공식 문서를 참조하십시오. https://pypi.org/project/pdf2image/

이미지 OCR

매우 정확한 OCR을 사용하는 대기업의 수많은 API가 있습니다. PDF는 일반적으로 밀도가 높은 텍스트 데이터로 가득 차 있다는 가정으로 인해 이러한 OCR을 수행하는 가장 적합한 방법은 Google Vision API, 특히 문서_텍스트_주석 이러한 목적을 위해 특별히 설계된 기능입니다. 구체적으로 특별히, 문서_텍스트_주석 다양한 언어로 된 필기를 포함하여 조밀 한 텍스트를 위해 Google이 디자인 한 OCR 엔진에 코드를 보냅니다.

전체 Google Vision API는 설정이 간단하며 다음에 대한 공식 지침을 참조 할 수 있습니다. https://cloud.google.com/vision/docs/quickstart-client-libraries 자세한 설정 절차는.

나중에 OCR 검색에 다음 코드를 사용할 수 있습니다.

def detect_document(path): """Detects document features in an image.""" from google.cloud import vision import io client = vision.ImageAnnotatorClient() with io.open(path, 'rb') as image_file: content = image_file.read() image = vision.Image(content=content) response = client.document_text_detection(image=image) for page in response.full_text_annotation.pages: for block in page.blocks: print('nBlock confidence: {}n'.format(block.confidence)) for paragraph in block.paragraphs: print('Paragraph confidence: {}'.format( paragraph.confidence)) for word in paragraph.words: word_text = ''.join([ symbol.text for symbol in word.symbols ]) print('Word text: {} (confidence: {})'.format( word_text, word.confidence)) for symbol in word.symbols: print('tSymbol: {} (confidence: {})'.format( symbol.text, symbol.confidence)) if response.error.message: raise Exception( '{}nFor more info on error messages, check: ' 'https://cloud.google.com/apis/design/errors'.format( response.error.message))

또는 Google Vision API는 자바 및 Go와 같은 여러 언어도 지원합니다. Google API 사용과 관련된 더 많은 코드는 여기에서 검색 할 수 있습니다. https://cloud.google.com/vision  

Amazon과 Microsoft의 다른 OCR 서비스 / API도 있으며 언제든지 사용할 수 있습니다. 파이테서랙트 특정 목적을 위해 모델을 교육하는 라이브러리.


PDF에서 정보를 추출하는 OCR 솔루션을 찾고 계십니까? 나노 넷 제공더 높은 정확도, 더 큰 유연성, 후 처리 및 광범위한 통합을위한 스핀!


비교

현재 시장에 나와있는 수많은 PDF OCR이 있습니다. 일부는 무료이고 빠르며 온라인에서 즉시 사용할 수 있지만 다른 일부는 전문적인 사용을 위해 더 정확하고 더 잘 설계된 제품을 제공합니다. 여기에서는 몇 가지 옵션과 장단점을 설명합니다.

온라인 PDF OCR

빠른 변환에 개인적인 용도로 PDF OCR을 사용할 때 정확성보다 자유롭고 빠른 것이 더 바람직 할 수 있습니다. 이러한 요구를 충족시키는 수많은 온라인 PDF OCR 서비스가 있습니다. 간단하게 PDF 문서를 업로드하고 빠르고 편리한 방식으로 서면 텍스트로 변환 할 수 있습니다.

그러나 이것의 주요 문제는 OCR의 품질 관리입니다. 이러한 온라인 무료 OCR 소프트웨어는 대부분의 경우 잘 작동하지만 지속적인 유지 관리가 필요한 다른 오프라인 소프트웨어에 비해 매번 최상의 품질의 출력을 제공 할 의무가 없습니다.

오프라인 소프트웨어

현재 매우 정확한 PDF OCR 서비스를 제공하는 여러 회사가 있습니다. 여기서는 다양한 측면에 특화된 PDF OCR의 몇 가지 옵션과 유망한 결과를 제공하는 것으로 보이는 최근 연구 프로토 타입을 살펴 봅니다.

이미지 속의 이미지와 같은 작업을 대상으로하는 여러 OCR 서비스가 있습니다. 현재 PDF 문서 읽기에만 집중하고 있으므로 이러한 서비스를 건너 뛰었습니다.

  • 애비 – ABBYY FineReader PDF는 ABBYY에서 개발 한 OCR입니다. 이 소프트웨어에는 PDF 읽기 및 텍스트 변환에 사용되는 친숙한 UI가 있습니다. 그러나 비 엔지니어링 특성 (대상 고객은 PDF OCR이 필요한 다른 분야의 비 기술 전문가)으로 인해 추가 처리를 위해 다른 프로그램에 통합하는 것이 더 어려울 수 있습니다.
  • 코 팩스 – ABBYY와 마찬가지로 Kofax는 구매가 필요한 친숙한 PDF 리더입니다. 가격은 개인용으로 고정되어 있으며 대기업 할인이 적용됩니다. 기술적 인 문제가 발생하는 경우 연중 무휴 지원도 제공됩니다.
  • 딥 리더 – Deep Reader는 ACCV Conference 2019에 발표 된 연구 작업입니다. 문서 일치, 텍스트 검색 및 이미지 노이즈 제거와 같은 작업을 수행하기 위해 여러 최신 네트워크 아키텍처를 통합합니다. 데이터를 체계적으로 검색하고 저장할 수있는 테이블 및 키-값 쌍 추출과 같은 추가 기능이 있습니다.
  • Nanonets ™ – Nanonets ™ PDF OCR은 딥 러닝을 사용하므로 완전히 템플릿과 규칙에 독립적입니다. 나노 넷은 특정 유형의 PDF에서 작동 할뿐만 아니라 텍스트 검색을 위해 모든 문서 유형에 적용될 수 있습니다.

결론

결론적으로이 기사에서는 OCR이 작동하는 방식의 기본 사항과 OCR 개발 타임 라인에 이어 간단한 자습서 및 사용 사례를 살펴 보았습니다. 또한 PDF OCR에 대한 실행 가능한 옵션 세트와 추가 사용을위한 장점 및 단점을 제시했습니다.

출처 : https://nanonets.com/blog/pdf-ocr/

타임 스탬프 :

더보기 AI 및 머신 러닝