테이블 형식 데이터 추출

소스 노드 : 1190443

추출하고 싶다 표 데이터 송장, 영수증 또는 기타 유형의 문서에서? 체크 아웃 나노 넷' AI 기반 OCR 추출 표 데이터.


개요

단순함을 기반으로 하는 Excel 테이블은 모든 구조화된 데이터를 디지털 방식으로 저장하는 가장 일반적인 방법입니다. 겉보기에는 단순해 보이는 스프레드시트가 실제로는 대기업 및 조직의 일상적인 데이터 처리와 밀접하게 연결되어 있습니다. 이제 회사는 몇 번의 클릭으로 여러 작업자에게 작업을 분배하고, 여러 현금 흐름에서 예산을 추적하고, 과거 데이터에서 정확한 예측을 할 수도 있습니다.

그러나 모든 데이터를 Excel로 올바르게 가져오면 많은 작업을 쉽게 수행할 수 있지만 기존 테이블, 스캔 또는 이미지에서 데이터를 추출하는 프로세스는 처음부터 쉽지 않습니다. 이제 일반적인 스프레드시트 표현이 데이터 처리 및 시각화에 많은 이점을 제공하기 때문에 컴퓨터 비전, 이미지 처리 및 딥 러닝 접근 방식을 통해 데이터를 추출하는 작업은 오늘날 연구 커뮤니티의 뜨거운 주제 중 하나로 부상했습니다. 데이터 추출은 매우 가깝지만 달성하기 어려운 것 같습니다.

이 기사에서는 이 작업을 처리하는 높은 수준의 단계를 소개하고 이러한 작업을 수동 및 자동으로 달성하기 위한 최신 데이터 추출 접근 방식 및 자습서를 소개하고 마지막으로 이러한 작업을 수행하기 위한 시장의 현재 솔루션에 대한 간략한 강조 표시와 함께 제공됩니다.

문제의 분해

표 형식 데이터를 추출하는 작업은 두 가지 하위 문제로 나눌 수 있습니다. 1) 기계가 형식을 인식할 수 없는 스캔/이미지/PDF 문서에서 표를 추출하는 것과 2) 표 셀 내부의 단어를 이해/해석하여 인식할 수 있도록 합니다. 스프레드시트용 CSV 파일로 제대로 가져왔습니다.

테이블 형식 데이터 추출의 사용 사례

테이블 형식 데이터 추출 - 사용 사례
테이블 형식 데이터 추출 – 사용 사례

비즈니스 현금 흐름 추적

회사의 구매 및 판매 출처가 동일한 출처인 경우 수동으로 영수증을 빠르게 비교하여 쉽게 추적할 수 있습니다. 그러나 특히 대기업의 경우에는 그렇지 않은 경우가 많습니다. 자금은 다양한 출처에서 들어오고 나갈 수 있으며 종종 다른 영수증 및 송장 형식을 갖습니다. 투자자, 구매자 및 판매자는 모두 고유할 수 있으며 다른 위치 또는 국가에서 올 수 있습니다. 다른 언어로 지불할 때 문제가 악화됩니다.

단순해 보이지만 오류가 발생하기 쉬운 이러한 작업을 완료하기 위해 직원을 고용하는 데는 해마다 엄청난 양의 리소스가 필요합니다. 표 형식의 데이터를 스캔하고 추출하는 자동화된 방법은 이러한 회사에서 비용, 시간 및 리소스를 절약하는 데 크게 도움이 됩니다. 게다가 잘 문서화된 스프레드시트는 데이터 분석을 위한 사후 처리를 훨씬 간단하게 만들 수도 있습니다. 기업은 조직화된 여러 Excel 시트에서 데이터를 추출하기만 하면 기계 학습 알고리즘을 통해 쉽게 예산 및 재무 예측을 할 수 있습니다.

비즈니스 간 기록 이전

테이블 형식 데이터 추출 - 사용 사례
테이블 형식 데이터 추출 – 사용 사례

새로운 위치, 국가로 이전하거나 다른 서비스를 선택할 때 고객은 이전 시스템의 동일한 데이터를 새 서비스 공급자에게 이전해야 합니다. 이러한 데이터에는 의료 데이터, 은행 거래 내역 등이 포함될 수 있지만 이에 국한되지 않습니다.

한 서비스에서 다른 서비스로 데이터를 이해하고 번역하는 시스템을 통합함으로써 기업은 비용 절감으로 큰 이점을 얻을 수 있습니다.


추출하고 싶다 표 데이터 송장, 영수증 또는 기타 유형의 문서에서? 체크 아웃 나노 넷' AI 기반 OCR 추출 표 데이터.


회계법인

회계 회사에는 두 가지 문제가 있습니다. 각 고객 회사의 현금 흐름 조정이 어렵고 여러 국가의 회사에 걸쳐 서로 다른 테이블 형식 및 데이터 저장 형식이 있습니다. 따라서 시간이 가장 중요한 바쁜 세금 보고 시즌에는 오류율이 최소화된 자동화된 데이터 추출 솔루션이 무거운 수작업을 줄이는 데 도움이 될 것입니다.

어떻게 진행합니까?

회계를 위한 테이블 형식 데이터 추출
회계를 위한 테이블 형식 데이터 추출

거의 모든 사람이 기계 학습이 이러한 자동화를 촉진하는 데 도움이 될 수 있다는 것을 알고 있지만 실제로 그 배후의 개념을 아는 사람은 거의 없습니다.

사실, 이 경우에 우리가 사용하는 것은 머신 러닝의 하위 브랜치인 딥 러닝이라는 개념입니다. 기능을 활용하여 미래를 예측합니다. 간단히 말해서, 딥 러닝은 생물학적 신경망을 모방한 신경망이라는 강력한 도구를 통해 기능을 시뮬레이션합니다. 우리는 예측과 실제 정답 간의 차이를 최소화하여 적절한 가중치와 뉴런을 학습합니다.

이 네트워크를 구성하는 방법에는 많은 변형이 있습니다. 아래에서 테이블 형식 데이터를 추출하는 데 필요한 변형에 대해 설명합니다.

현지 시간

CNN(Convolutional Neural Networks)은 신경망과 매우 유사한 학습 가능한 가중치와 편향을 가진 뉴런으로 구성됩니다. 주요 차이점은 입력이 CNN에 대한 그림이라고 가정하여 커널이라는 아키텍처에 특정 속성을 포함할 수 있다는 것입니다. 커널은 인접 기능을 가중치 합계로 집계하여 다음 레이어에 제공하는 슬라이딩 창입니다. 결과적으로, 순방향 기능은 구현하기에 더 효율적이고 실질적으로 개선됩니다. CNN은 이미지 내에서 특정 개체를 찾고자 할 때 유용합니다. 이 경우에는 테이블입니다.

RNN

반면 순환 신경망(RNN)은 이전 출력을 다음 예측을 위한 입력으로 사용할 수 있도록 하는 네트워크 클래스입니다. 이것은 예측이 이전 시간의 결과에 의존할 때 특히 유용합니다(예: 일기 예보에서 오늘 비가 올 것인지 여부에 대한 질문은 전날 비가 왔는지 여부에 크게 의존합니다). 이 유형의 아키텍처는 이전 단어가 현재 단어의 의미에 영향을 미칠 수 있는 문장의 의미를 이해하려고 할 때 유용합니다.

개념 정리하기

적절한 데이터 세트에 대한 교육을 통해 이제 다음 절차를 통해 표 형식의 데이터를 추출할 수 있습니다.

  1. CNN을 사용하여 문서 유형을 분류하는 것은 하나의 이미지 내에 있습니다. 이를 통해 다양한 시나리오에서 잠재적으로 더 잘 작동할 수 있는 다양한 훈련된 테이블 감지기를 선택할 때 더 구체적으로 선택할 수 있습니다(예: 송장용 및 은행 거래 내역서용)
  2. CNN을 사용하여 테이블, 행 및 열을 추가로 감지합니다.
  3. CNN과 RNN을 결합하여 광학 문자 인식을 수행하여 각 테이블, 행 또는 열에 정확히 무엇이 저장되어 있는지 이해할 수 있습니다. "언어"를 이해하면 추출된 데이터를 통계 분석 및 교차 비교에 추가로 채택할 수 있는 지정된 형식(예: CSV 또는 JSON)으로 저장할 수 있습니다.

추출하고 싶다 표 데이터 송장, 영수증 또는 기타 유형의 문서에서? 체크 아웃 나노 넷' AI 기반 OCR 추출 표 데이터.


튜토리얼

PDF를 이미지로 변환

컴퓨터 비전을 사용하여 표 형식의 데이터를 추출한다는 것은 궁극적으로 데이터가 아직 없는 경우 이미지 형식으로 사전 처리되어야 함을 의미합니다. 변환해야 하는 가장 일반적인 문서 유형은 PDF이므로 첫 번째 단계는 추가 처리를 위해 pdf 파일을 이미지 파일로 변환하는 것입니다. 그렇게 하려면 다음과 같이 저장할 수 있는 pdf2image 라이브러리가 필요합니다.

pip install pdf2image

그런 다음 pdf 파일을 전처리하기 위해 다음을 작성할 수 있습니다.

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

제시된 코드는 from 바이트와 from 경로를 모두 제공합니다. 귀하의 필요에 맞는 것을 선택하십시오.

테이블 찾기

이미지 내에서 테이블을 찾으려면 테이블처럼 보이는 선과 경계를 감지하는 것이 순진한 방법입니다. 가장 간단한 방법은 OpenCV를 통해 전통적인 컴퓨터 비전 방법을 사용하는 것입니다. 공식 웹 사이트). 사용하려면 다음과 같이 설치하면 됩니다.

pip install opencv-python

그러나 회사에 파일 데이터베이스의 일반적인 테이블이 어떻게 생겼는지에 대한 풍부한 데이터가 있는 경우 개체 감지 방법에 따라 테이블을 찾을 수도 있습니다. 몇 가지 주목할만한 방법에는 Faster RCNN 및 YOLO가 있습니다. 그러나 이를 위해 고유한 모델을 훈련하면 훈련 중에 GPU와 같은 계산 리소스와 함께 이미지/스캔된 PDF가 캡처되는 모든 종류의 시나리오에 이르는 상당한 양의 데이터가 필요합니다.

Google Vision API를 통한 콘텐츠 추출

마지막으로 테이블 셀의 경계 상자가 설정되면 이제 OCR 검색을 위한 Google Vision API가 최상의 옵션 중 하나인 것처럼 보이는 OCR로 이동할 수 있습니다. Google 비전 API는 방대한 고객 기반으로 인해 대규모 크라우드소싱을 기반으로 훈련되었습니다. 따라서 개인 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 클라우드의 원격 이미지를 사용하는 경우 다음 코드를 대신 사용할 수 있습니다.

def detect_text_uri(uri): """Detects text in the file located in Google Cloud Storage or on the Web. """    from google.cloud import vision client = vision.ImageAnnotatorClient() image = vision.Image() image.source.image_uri = uri response = client.text_detection(image=image) texts = response.text_annotations    print('Texts:') for text in texts: print('n"{}"'.format(text.description)) vertices = (['({},{})'.format(vertex.x, vertex.y)                  for vertex in text.bounding_poly.vertices])        print('bounds: {}'.format(','.join(vertices))) 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의 API는 기계 학습 모델이 많은 도전적인 시나리오에 대해 매우 강력하고 강력하다는 점에서 매우 유연합니다. document_text_detection 함수는 주로 PDF에 나타나는 매우 압축된 텍스트에 대해 특별히 훈련되고 전문화된다는 점에 유의하십시오. 이것은 많은 사람들의 요구에 적합하지만 PDF에 단어가 다소 부족한 경우 야생 이미지에 더 중점을 둔 다른 텍스트 감지 기능을 사용하는 것이 더 나을 수 있습니다.

Google API 사용에 관한 추가 코드는 여기에서 검색할 수 있습니다. https://cloud.google.com/vision; 다른 언어(예: Java 또는 Go)에 더 익숙하다면 코드를 참조할 수도 있습니다.

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


추출하고 싶다 표 데이터 송장, 영수증 또는 기타 유형의 문서에서? 체크 아웃 나노 넷' AI 기반 OCR 추출 표 데이터.


코딩을 모르세요? 나노넷을 사용해보세요!

컴퓨터 과학에 대한 배경 지식이 없거나 비즈니스에 이러한 기능이 필요한 경우 Nanonets는 하나의 단일 데이터 유형 이상으로 수행할 수 있는 최고의 테이블 추출 기술 중 하나를 제공합니다. 사용 방법에 대한 간단한 자습서는 다음과 같습니다.

1 단계

nanonets.com으로 이동하여 등록/로그인합니다.

테이블 형식 데이터 추출 – 나노넷

2 단계

등록 후 모든 사전 구축된 추출기가 만들어지는 "시작하려면 선택" 영역으로 이동하고 표 형식 데이터 추출을 위해 설계된 추출기의 "표" 탭을 클릭합니다.

3 단계

몇 초 후에 준비가 되었다는 데이터 추출 페이지가 나타납니다. 추출할 파일을 업로드합니다.

4 단계

처리 후 Nanonets는 빈 공간을 건너뛰어도 모든 표 정보를 정확하게 추출합니다! 다운로드 및 추가 계산을 위해 데이터를 JSON에 넣을 수도 있습니다.

결론

그리고 당신은 그것을 가지고 있습니다! 테이블 형식 데이터를 추출하는 기술의 발전 과정과 이를 비즈니스에 쉽게 통합하는 방법에 대한 간략한 역사. 이를 통해 이전에 데이터를 입력하고 다시 확인하는 데 필요한 많은 노동력을 절약할 수 있기를 바랍니다.

타임 스탬프 :

더보기 AI 및 머신 러닝