KR20220073778A - 광학 문자 인식을 위한 컴퓨터 구현 방법 - Google Patents
광학 문자 인식을 위한 컴퓨터 구현 방법 Download PDFInfo
- Publication number
- KR20220073778A KR20220073778A KR1020227013690A KR20227013690A KR20220073778A KR 20220073778 A KR20220073778 A KR 20220073778A KR 1020227013690 A KR1020227013690 A KR 1020227013690A KR 20227013690 A KR20227013690 A KR 20227013690A KR 20220073778 A KR20220073778 A KR 20220073778A
- Authority
- KR
- South Korea
- Prior art keywords
- data processing
- computer
- character recognition
- optical character
- configuration
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000012015 optical character recognition Methods 0.000 title claims abstract description 36
- 238000012545 processing Methods 0.000 claims abstract description 198
- 230000006870 function Effects 0.000 claims abstract description 30
- 238000004590 computer program Methods 0.000 claims abstract description 7
- 238000013528 artificial neural network Methods 0.000 claims description 31
- 230000001902 propagating effect Effects 0.000 claims description 4
- 238000004422 calculation algorithm Methods 0.000 description 19
- 238000012549 training Methods 0.000 description 13
- 238000001514 detection method Methods 0.000 description 10
- 238000012795 verification Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000004438 eyesight Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- WQZGKKKJIJFFOK-GASJEMHNSA-N Glucose Natural products OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O WQZGKKKJIJFFOK-GASJEMHNSA-N 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 239000008280 blood Substances 0.000 description 2
- 210000004369 blood Anatomy 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013434 data augmentation Methods 0.000 description 2
- 239000008103 glucose Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000004313 glare Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000002087 whitening effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G06N3/0454—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/19—Recognition using electronic means
- G06V30/191—Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
- G06V30/1916—Validation; Performance evaluation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Character Discrimination (AREA)
Abstract
광학 문자 인식을 위한 컴퓨터 구현 방법 및 대응하는 데이터 처리 장치, 컴퓨터 프로그램 및 컴퓨터 판독 가능 매체에 있어서, 상기 방법은 다음의 단계들을 포함한다: 하나 이상의 문자를 포함하는 입력 이미지의 이미지 데이터를 수신하는 단계; 및 상기 수신된 이미지 데이터에 하나 이상의 데이터 처리 동작을 적용하는 단계를 포함하고, 상기 데이터 처리 동작 중 적어도 하나는 상기 입력 이미지의 상기 하나 이상의 문자를 반환하도록 구성되고, 여기서, 각각의 데이터 처리 동작은 처리 구성에 따라 미리 정의된 세트의 이용 가능한 데이터 처리 함수로부터 선택되고, 상기 이용 가능한 데이터 처리 함수는 사전 컴파일된 함수이고, 상기 처리 구성은 런타임 시에 변경될 수 있다.
Description
본 발명은 광학 문자 인식을 위한 컴퓨터 구현 방법(computer-implemented method for optical character recognition)에 관한 것으로서, 상기 방법은 하나 이상의 문자(즉, 텍스트)를 포함하는 입력 이미지의 이미지 데이터를 수신하는 단계 및 상기 수신된 이미지 데이터에 하나 이상의 데이터 처리 동작을 적용하는 단계를 포함하되, 상기 데이터 처리 동작 중 적어도 하나는 상기 입력 이미지의 상기 하나 이상의 문자를 반환하도록 구성된다.
이러한 방법은 구체적으로 디스플레이 상에 디스플레이된 심볼들의 광학 검출을 위해 US 2017/0177968 A1에 개시되어 있다.
이러한 유형의 애플리케이션에서, 상기 처리 동작들은 종종 허용 가능한 인식 성능을 달성하기 위해 특정 사용-사례에 맞게 조정될 필요가 있다. 이는 인식될 문자가 매우 적은 대비(contrast ) 및 가시 외곽선(visible contours)을 가지는 사용-사례에 대해 특히 그러하다. 상기 처리 동작들을 조정하는(tailoring) 프로세스에는 가능한 한 많은 사용-사례의 샘플 이미지가 필요하다. 이들 샘플 이미지를 수집하는 것은 시간이 많이 걸리며 비용이 많이 든다. 따라서, 조정은 종종 생산 이미지들에 기초하여 생산과정에서 수행되는 반복 프로세스이다. 그러나, 반복(iterations)은 수반된 처리 동작이 CPU 집약적이고 특정 하드웨어에 대해 최적화되어 있기 때문에 복잡하다.
완전히 상이한 분야에 대해, 즉 사용자 인터페이스들의 다변량 테스트를 위해, US 2013/0219307 A1은 실행 시간(runtime)에 변경될 수 있는 사용자 인터페이스 정의를 예견한다. 이러한 사용자 인터페이스 정의는 상기 애플리케이션이 입력 데이터를 처리하는 방법과 관련이 없으며, 이미지 데이터는 훨씬 적다.
US 2019/0073571 A1은 텍스트 심볼들을 묘사하는 이미지의 광학 문자 인식을 수행하는 방법에 관한 것이다. 상기 방법은 미리 정의된 일련의 변환 동작 세트를 사용하는 것을 포함한다. 각각의 세트는 상기 이미지의 일부분에 적용되어, 상기 이미지의 변환된 부분을 생성할 수 있다. 상기 이미지의 부분은 단어, 단어 그룹 또는 텍스트 라인을 형성할 수 있는 심볼 시퀀스(symbol sequence)를 포함하는 것으로 검출되는 것일 수 있다. 상기 변환 동작들은 부분의 해상도를 변경하는 것, 상이한 이진화 방법을 적용하는 것, 왜곡 설정들을 변경하는 것, 눈부심 보상 설정들, 블러 제어 설정들, 또는 노이즈 감소 동작들을 변경하는 것을 포함할 수 있다. 상기 변환 동작들의 세트는 결과 텍스트의 검출된 품질이 미리 결정된 품질 임계치를 초과할 때까지 미리 정의된 시퀀스에 따라 이미지 부분에 적용될 수 있다.
Chattopadhyay 등에 의한 논문 "강력한 OCR을 위한 이진화 방법의 자동 선택(Automatic Selection of Binarization Method for Robust OCR)" (In: 2013 12th International Conference on Document Analysis and Recognition, IEEE, 2013. p. 1170-1174)은 기계 학습을 사용하여 이진화의 데이터 처리 동작을 위한 최적의 알고리즘을 선택하는 방법에 관한 것이다. 본질적으로, 단일 데이터 처리 동작은 다수의 주어진 가능성으로부터 훈련된 모델에 의해 선택되어야 한다.
CN 109087236 A는 다중-깊이 학습 플랫폼 및 산업 이미지 검출 제어 방법 및 시스템을 설명한다. 상기 방법은 일반 파라미터에 따라 신경망 및 네트워크 구성의 모델을 로딩하는 단계 및 이어서 광학 문자 인식을 위해 상기 로딩된 모델을 사용하는 단계를 포함한다.
Sabourin 등에 의한 논문 "신경망에 의한 광학 문자 인식(Optical character recognition by a neural network)" (Neural networks 5.5 (1992): 843-852.)은 다층 퍼셉트론 신경망 분류기를 사용하는 광학 문자 인식 시스템을 개시한다.
본 발명의 목적은 광학 문자 인식을 위한 컴퓨터 구현 방법의 맞춤화(tailoring)를 용이하게 하는 것이다.
본 발명은 처음에 언급된 종류의 컴퓨터 구현 방법을 제안하며, 각각의 데이터 처리 동작은 처리 구성에 따라 미리 정의된 세트의 이용 가능한 데이터 처리 기능으로부터 선택되고, 상기 이용 가능한 데이터 처리 기능은 사전 컴파일된 기능이며, 상기 방법은 상기 하나 이상의 데이터 처리 동작을 적용하기 전에, 런타임에 원격 서비스로부터 상기 처리 구성을 로딩하는 단계를 추가 포함한다. 따라서, 상기 처리 구성은 일반적으로 런타임에 변경될 수 있으며, 예를 들어 상기 원격 서비스로부터 로딩된 상기 처리 구성으로 대체될 수 있다.
본 발명에서, 사전 컴파일은 상기 데이터 처리 기능이 특정 처리 하드웨어로 제한된다는 것을 의미하며, 즉 이들은 특정 하드웨어 플랫폼(CPU 또는 GPU)에 특정한 하드웨어-정의 명령어 세트(hardware-defined instruction set)를 사용한다. 상기 처리 구성이 변경(수정 또는 변경, 예를 들어 업데이트 또는 대체)될 수 있다는 것은 변경 후에 상이한 처리 동작이 상이한 데이터 처리 기능을 호출하는 데 사용될 수 있거나 동일한 데이터 처리 기능이 예를 들어 상이한 파라미터 또는 상이한 순서로 상이하게 사용될 수 있다는 것을 의미한다. 런타임은 본 방법을 구현하는 소프트웨어 애플리케이션이 실행되는 상황을 지칭하며, 예를 들어 그 명령어가 실행되기 위해 컴퓨터의 메모리에 로딩된다. 런타임은 나중에 로딩될 명령어가 소스 코드로부터 도출되는 컴파일 시간과 대조적이다. 특히, 사전 컴파일된(또는 단순히 "컴파일된") 기능인 상기 데이터 처리 기능은 런타임에 변경될 수 없다.
런타임에 상기 처리 구성을 변경할 가능성은 더 쉽고 빠른 반복을 가능하게 한다. 본 방법을 구현하는 소프트웨어 애플리케이션은 전체적으로 대체될 필요가 없다. 상기 맞춤화는 기본적으로 구성의 문제이다. 전형적으로, 구성 변경은 소프트웨어 변경보다 수행하기 더 쉽고, 더 빠르며, 더 낮은 권한을 필요로 한다. 예를 들어, 모바일 애플리케이션의 경우, 소프트웨어 업데이트는 일반적으로 플랫폼 제공자("스토어")와의 상호 작용을 필요로 하고, 종종 업데이트를 승인하기 위한 사용자 상호 작용을 수반한다. 반면에, 구성 변경은 상기 사용자에 의해 눈에 띄지 않게 수행될 수 있다.
상기 원격 서비스는 하나 이상의 네트워크 서버 상에서 호스팅될 수 있다. 원격 서비스의 사용은 구성 변경이 네트워크를 통해 상기 방법을 수행하는 단말기들에 분배될 수 있기 때문에 상기 데이터 처리의 반복 및 맞춤화를 용이하게 한다. 이러한 네트워크는 일시적으로 이용 가능하지 않을 수 있기 때문에, 상기 처리 구성은 상기 단말기들 상에 로컬로 캐싱되거나 저장될 수 있다. 상기 원격 서비스는 소프트웨어 업데이트에 사용되는 상기 분배 채널과 상이한 분배 채널일 수 있다. 이는 상기 소프트웨어 제공자(예를 들어, 사용 사례 특정 소프트웨어)와 상기 데이터 처리의 맞춤화를 수행하는 서비스 제공자의 분리를 가능하게 한다. 상기 소프트웨어 제공자는 그의 소프트웨어를 배치하기 위해 상기 소프트웨어 분배 채널을 사용하고, 상기 서비스 제공자는 상기 처리 구성이 그 소프트웨어에 의해 로딩되는 상기 원격 서비스를 실행한다.
상기 처리 구성은 예를 들어, 데이터 처리 동작의 총 수, 2개 이상의 상이한 데이터 처리 동작의 순서, 및 상기 하나 이상의 데이터 처리 동작의 파라미터화 중 하나 이상을 결정할 수 있다. 상기 데이터 처리 동작의 파라미터화는 존재하는 경우 연관된 데이터 처리 기능을 호출하기 위한 상기 파라미터들을 지칭한다. 이들 파라미터들은 각각의 데이터 처리 동작의 정의의 일부이며, 즉 상이한 파라미터들을 사용하는 2개의 데이터 처리 동작은 그 자체가 상이하다.
이러한 맥락에서, 상기 방법은 선택적으로: 상기 하나 이상의 데이터 처리 동작들을 적용하기 전에 상기 원격 서비스로부터 수신된 상기 처리 구성을 검증하는 단계를 추가 포함한다. 상기 처리 구성의 변경이 발생하거나 런타임에서 발생할 수 있기 때문에, 상기 검증은 잘못된 구성으로 인한 런타임 에러들을 회피하는 것을 돕는다. 상기 처리 구성은 성공적인 검증 후에만 국부적으로 저장될 수 있다. 그렇지 않으면, 즉, 상기 검증이 실패하면, 이전의 처리 구성이 사용된다.
대응하여, 상기 방법은 선택적으로: 상기 원격 서비스로부터 수신된 상기 처리 구성이 무효하다고 결정하는 단계 및 이전에 캐싱된 처리 구성을 로딩하는 단계를 추가 포함한다. 예를 들어, 참조된 데이터 처리 기능들 중 하나가 이용 가능하지 않거나 무효한 구성 신택스가 사용되면, 예를 들어, 파라미터들의 수들 또는 타입이 상기 처리 기능들의 인터페이스와 매칭하지 않으면, 상기 처리 구성이 무효하다고 결정될 수 있다.
일 실시예에서, 상기 방법은: 상기 방법을 실행하는 장치의 애플리케이션 식별자 및/또는 하드웨어 식별자와 연관된 특정 처리 구성을 상기 원격 서비스로부터 요청하는 단계를 추가 포함할 수 있다. 애플리케이션 식별자(예를 들어, API 키)는 상기 원격 서비스에 대한 액세스를 인증하고 또한 상기 처리 구성이 제공될 특정 사용-사례에 상기 요청을 상관시키기 위해 사용될 수 있다. 하드웨어 식별자(예를 들어, 하드웨어 버전)는 상기 방법을 최종적으로 실행하는 단말의 능력들(예를 들어, 처리 전력 또는 이용 가능한 하드웨어 가속도)에 의존하여, (또한 동일한 사용-사례에 대해) 상이한 처리 구성들을 배치하기 위해 사용될 수 있다. 더 가능한 하드웨어는 더 높은 인식 레이트를 달성하는 더 자원-집약적인 작업 부하들을 실행하도록 구성될 수 있는 반면, 덜 강력한 하드웨어는 상기 달성된 인식 레이트의 대가로 인식 속도 및 응답성을 유지하기 위해 덜 요구하는 처리 구성으로 서빙될 수 있다.
원격 서비스로부터 상기 처리 구성을 로딩하는 단계는 상기 원격 서비스로부터 암호화된 처리 구성을 수신하는 단계 및 비밀 키를 사용하여 상기 원격 서비스로부터 수신된 암호화된 처리 구성을 복호화 하는 단계를 포함할 수 있다. 상기 처리 구성의 상기 암호화된 송신은 단말과 원격 서비스 사이의 통신에 액세스할 수 있는 중개자들이 (복호화 되는) 처리 구성을 획득하는 것을 실질적으로 불가능하게 함으로써 맞춤화 처리에서 행해진 투자를 보호한다. 상기 비밀 키는 예를 들어, 소프트웨어 분배 채널을 통해 또는 - 최대 보안을 위해 - 별개의 키 분배 채널을 통해 별개로 분배될 수 있다.
선택적으로, 상기 방법은: 상기 하나 이상의 데이터 처리 동작들을 적용하기 전에, 상기 처리 구성을 인증하는 단계를 추가 포함한다. 상기 처리 구성을 인증하는 단계는 상기 처리 구성의 암호 서명 또는 해시를 검증하는 단계를 포함할 수 있다. 상기 인증에 의해, 상기 처리 구성의 원점 및/또는 무결성이 검증되고 보장될 수 있다. 상기 인증이 실패하면 상기 처리 구성을 폐기하는 것이 예견될 수 있다.
비교적 큰 몸체의 샘플 이미지를 필요로 하고 결과적으로 맞춤화가 상당한 노력을 수반하는 일 실시예는 상기 데이터 처리 동작 중 적어도 하나가 하나 이상의 인공 신경망을 통해 데이터를 전파하는 것을 포함할 때이며, 상기 하나 이상의 인공 신경망의 네트워크 구성은 런타임 시에 변경될 수 있다. 상기 네트워크 구성은 가중치 및 선택적으로 상기 인공 신경망의 구조를 결정한다. 이러한 경우에, 상기 하나 이상의 데이터 처리 동작을 적용하는 것은 상기 로딩된 네트워크 구성에 의해 구성된 인공 신경망을 통해 이미지 데이터를 전파하는 단계를 포함한다. 인공 신경망은 (예를 들어, 문자 인식 또는 문자 분류를 위해) 그들의 성능을 향상시키기 위해 훈련을 필요로 한다. 상기 훈련은 상기 네트워크 구성을 변경한다. 런타임 동안 (즉, 전체 소프트웨어를 변경하지 않고) 상기 네트워크 구성을 변경할 가능성은 그러한 애플리케이션의 맞춤화 처리를 용이하게 한다. 상기 네트워크 구성은 상기 처리 구성의 일부일 수 있거나 별개일 수 있다. 또한, 상기 네트워크 구성은 상기 처리 구성과 유사하게 해독 및/또는 인증될 수 있고, 이들 측면에서 상기 설명은 유사하게 적용된다.
본 맥락에서, 상기 방법은 선택적으로: 상기 하나 이상의 데이터 처리 동작을 적용하기 전에, 원격 서비스로부터 네트워크 구성을 로딩하는 단계를 추가 포함한다. 상기 인공 신경망의 훈련은 특히 자원 집약적 작업부하이다. 본 실시예에서, 상기 훈련은 예를 들어, 상기 원격 서비스에 의해 또는 다른 방식으로 원격으로 수행될 수 있고 그 다음 상기 원격 서비스를 통해 분배될 수 있고, 훈련의 결과, 즉 훈련된 네트워크의 네트워크 구성만이 단말기에 분배된다. 이것은 단말기들이 훈련을 로컬로 수행하는 것을 완화시킨다.
일 실시예에서, 입력 이미지의 이미지 데이터를 수신하는 단계는 이미지 센서로 하나 이상의 이미지를 캡처하는 단계를 포함한다. 이러한 경우에 상기 광학 문자 인식은 이미지, 즉 카메라를 캡처하는 능력을 가지는 장치 또는 단말기 상에서 로컬로 수행된다. 상기 이미지들은 단일 사진들 또는 예를 들어 비디오로부터의 이미지의 시퀀스일 수 있다.
캡처 프로세스 동안 즉각적인 피드백을 제공하기 위해, 이미지 데이터를 수신하는 단계 및 하나 이상의 데이터 처리 동작을 적용하는 단계는 입력 이미지들의 시퀀스에 대해 반복될 수 있고 병렬로 또는 교대로 실행될 수 있다. 예를 들어, 상기 방법은 (상기 사용자에 의해 및/또는 문자 또는 텍스트에 관한 미리 정의된 기대 및 제약에 의해 결정된) 만족스러운 인식 결과가 획득될 때까지 비디오 스트림의 다수의 프레임에 적용될 수 있다.
본 발명은 또한 상기 설명된 방법의 단계 및 그 선택적 변형 중 임의의 것을 수행하기 위한 수단을 포함하는 데이터 처리 장치에 관한 것이다. 예를 들어, 상기 처리 장치는 선택적으로 상기 언급된 캡처 단계를 수행하기 위한 카메라 및/또는 가능한 경우 원격 서비스와 통신하기 위한 통신 유닛을 포함할 수 있다.
또한, 본 발명은 이전 단락에서 언급된 데이터 처리 장치로 하여금 상기 설명된 방법의 단계 및 그 선택적 변형 중 임의의 것을 실행하게 하는 명령어를 포함하는 컴퓨터 프로그램에 관한 것이다.
마지막으로, 본 발명은 또한 상기 언급된 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 매체에 관한 것이다.
이제 도면을 참조하면, 도면은 본 개시를 예시하기 위한 것이고 이를 제한하기 위한 것이 아니다.
도 1은 이동 단말기를 이용한 광학 문자 인식을 위한 시스템을 개략적으로 도시한다.
도 2는 도 1에 따른 이동 단말기에 의해 구현된 바와 같은 광학 문자 인식을 위한 컴퓨터 구현 방법을 개략적으로 도시한다.
도 3은 도 2에 도시된 방법의 순서도를 도시한다.
도 4는 단일 데이터 처리 기능을 사용하는 최소 처리 구성을 개략적으로 도시한다.
도 5는 3개의 상이한 데이터 처리 기능을 사용하는 약간 더 정교한 처리 구성을 개략적으로 도시한다.
도 6은 다수의 상이한 데이터 처리 기능을 사용하는 광학 문자 인식을 위한 처리 구성의 실제 예를 개략적으로 도시한다.
도 7은 2개의 데이터 처리 동작을 위한 인공 신경망을 사용하는 광학 문자 인식을 위한 처리 구성의 간단한 예를 개략적으로 도시한다.
도 8은 본 발명에 따른 광학 문자 인식을 위한 컴퓨터 구현 방법에 사용되는 인공 신경망의 네트워크 구성을 업데이트하는 방법을 개략적으로 도시한다.
도 1은 이동 단말기를 이용한 광학 문자 인식을 위한 시스템을 개략적으로 도시한다.
도 2는 도 1에 따른 이동 단말기에 의해 구현된 바와 같은 광학 문자 인식을 위한 컴퓨터 구현 방법을 개략적으로 도시한다.
도 3은 도 2에 도시된 방법의 순서도를 도시한다.
도 4는 단일 데이터 처리 기능을 사용하는 최소 처리 구성을 개략적으로 도시한다.
도 5는 3개의 상이한 데이터 처리 기능을 사용하는 약간 더 정교한 처리 구성을 개략적으로 도시한다.
도 6은 다수의 상이한 데이터 처리 기능을 사용하는 광학 문자 인식을 위한 처리 구성의 실제 예를 개략적으로 도시한다.
도 7은 2개의 데이터 처리 동작을 위한 인공 신경망을 사용하는 광학 문자 인식을 위한 처리 구성의 간단한 예를 개략적으로 도시한다.
도 8은 본 발명에 따른 광학 문자 인식을 위한 컴퓨터 구현 방법에 사용되는 인공 신경망의 네트워크 구성을 업데이트하는 방법을 개략적으로 도시한다.
도 1은 광학 문자 인식을 위한 시스템(1)을 도시한다. 상기 시스템(1)은 데이터 처리 장치(2) 및 원격 서비스(3)를 포함한다. 상기 데이터 처리 장치(2)는 이동 단말기(4), 예를 들어, 스마트폰 또는 태블릿 컴퓨터일 수 있다. 이하에서, 이동 단말기(4)를 언급할 때, 본 발명은 일반적으로 임의의 데이터 처리 장치(2), 즉, 그 장치가 이동 및/또는 단말기인지에 관계없이, 임의의 데이터 처리 장치(2)에 관한 것이다.
상기 이동 단말기(4)는 적어도 하나의 데이터 접속(5, 6)을 통해 원격 서비스(3)에 접속된다. 이들 데이터 접속(5, 6)은 무선 통신 수단(예를 들어, Wi-Fi 또는 셀룰러 네트워크) 및 인터넷을 통해 설정될 수 있다.
상기 이동 단말기(4)는 하나 이상의 소프트웨어 애플리케이션(또는 "앱")에 의해 특정 사용 사례를 위해 구성되는 범용 컴퓨팅 및 통신 장치일 수 있다. 각각의 소프트웨어 애플리케이션은 다시 여러 소프트웨어 모듈 또는 라이브러리를 포함할 수 있다. 본 발명에 의해 목표로 하는 사용 사례, 즉, 광학 문자 인식은 상기 이동 단말기(4)에 저장되고 설치된 하나의 이러한 소프트웨어 애플리케이션에 의해 커버될 수 있다. 이러한 소프트웨어 애플리케이션은 광학 문자 인식을 위한 소프트웨어 개발 키트(SDK: Software Development Kit)(7)의 형태의 특수 모듈을 사용한다. 상기 광학 문자 인식은 특정 제품 유형(예를 들어, 타이어 식별 번호 또는 TINs)으로부터 일련 번호를 판독하는 것과 같은 특정 목적을 위해 수행될 수 있다. 이들 일련 번호는 이어서 예를 들어, 인식된 일련 번호에 관련된 확장된 정보를 디스플레이하는 데 사용될 수 있다. 이러한 확장된 정보는 특정 제품의 호환 가능한 대체물의 이용 가능성과 같은 기술 사양 또는 사업 정보일 수 있다. 이들 사용 사례 특정 작업에 관련된 처리는 고객 애플리케이션(8)에 의해 구현된다. "고객(Customer)"은 SDK 제공자에 대한 관계를 지칭한다. 상기 고객 애플리케이션(8)은 SDK(7)를 호출하고, 링크(9)로 표시된 SDK(7)로부터 반환 값을 수신한다.
상기 원격 서비스(3)는 내부적으로 여러 특수 서비스로 구성될 수 있다. 상기 내부 구조는 상기 이동 단말기(4) 및 SDK(7)에 불투명할 수 있거나 불투명하지 않을 수 있다. 도 1에 도시된 예에서, 상기 원격 서비스(3)는 자산 서비스(10), API 게이트웨이(11), 고객 데이터베이스(12) 및 자산 저장소(13)를 포함한다. 상기 자산 저장소(13)는 예를 들어, 특수 클라우드 저장소 제공자에 의한 클라우드 저장소일 수 있다. 상기 자산 서비스(10) 및 상기 자산 저장소(13)에 대한 액세스는 상기 SDK(7)를 통해 제공된 고객 자격 증명의 인증에 의존할 수 있다. 상기 고객 데이터베이스(12)는 제공된 고객 자격 증명을 검증하기 위한 계정 정보를 보유한다. 상기 자산 저장소(13)는 접속(6)을 통해 이동 단말기들(4)에 처리 구성을 배치하는 데 사용될 수 있다. 상기 자산 서비스(10)는 처리 구성의 개선을 위해 샘플 입력 이미지와 같은 SDK(7)로부터의 피드백 데이터를 접속(5)을 통해 수신할 수 있다. 상기 API 게이트웨이(11)는 상기 자산 서비스(10)를 위해 상기 고객 데이터베이스(12)에 대한 표준화된 액세스를 제공하고, 상기 고객 데이터베이스(12)의 내부 구조를 숨긴다.
상기 자산 저장소(13)에 저장된 자산들은 상기 SDK(7)에 대한 처리 구성 및 선택적으로 하나 이상의 네트워크 구성들을 포함한다. 이들 자산들은 고객 자격 증명들(예를 들어, 고유한 API 키)을 통해 고객 계정과 연관된다. 상기 원격 서비스로부터 이들 자산들을 액세스 및 리트리브하기 위해, 상기 모바일 단말기(4)는 유효한 고객 자격 증명들을 제공해야 한다. 그 다음, 상기 원격 서비스(3)는 처리 구성 및 선택적으로 제공된 고객 자격 증명들과 연관된 하나 이상의 네트워크 구성들을 송신할 것이다. 일반적으로, 상기 고객 자격 증명들은 고객 애플리케이션(8)에 임베딩될(embedded), 예를 들어 하드코딩될(hardcoded) 것이다. 통상적으로, 상기 고객 애플리케이션(8)의 사용자, 즉 상기 이동 단말기(4)를 사용하는 사람은 상기 고객 자격 증명들을 볼 수 없거나 또는 고객 자격 증명들을 변경할 수 없을 것이다. 캐싱된 자산들이 상기 이동 단말기(4)에 로컬로 저장되는 경우, 상기 고객 자격 증명들은 또한 이들 캐싱된 자산들에 대한 액세스를 승인하기 전에 로컬로 인증될 수 있다.
또한, 상기 SDK(7)는 하드웨어 식별자를 결정할 수 있다. 상기 하드웨어 식별자는 상기 고객 애플리케이션(8)에 의해 제공될 수 있거나 또는 상기 로컬 운영 시스템 및 상기 이동 단말기(4)로부터 상기 SDK(7)에 의해 리트리브될 수 있다. 상기 하드웨어 식별자에 기초하여, 주어진 하드웨어에 대해 구체적으로 최적화된 상이한 처리 구성 및 선택적으로 네트워크 구성들이 상기 원격 서비스(3)로부터 리트리브될 수 있다. 그에 의해, 현대의 장치들에서 점점 더 발견되는 특수-목적 하드웨어, 예를 들어 신경망 계산들에 의해 야기되는 작업부하들에 대해 구체적으로 최적화된 특수-목적 칩들이 사용 및 활용될 수 있다.
일단 초기화 호출(14)이 상기 OCR SDK에서 트리거되면, 로컬 라이센스 체크(15)는 고객 자격 증명들의 부분으로서 상기 고객 애플리케이션(8)에 의해 제공되는 라이센스 키가 현재 애플리케이션에 대해 유효한지 여부를 결정하고, 이것이 그 경우가 아니라면 종료할 것이다.
일단 상기 라이센스 체크(15)가 통과되면, 승인 요청(16)은 상기 백엔드, 즉 상기 원격 서비스(3)에 전송될 것이다. 상기 승인 요청(16)을 이용하여, 고객 자격 증명들 또는 그것의 부분(예를 들어, API 키)은 상기 원격 서비스(3)에 송신될 것이고, 상기 원격 서비스(3)는 제공된 자격 증명들을 검증할 것이고, 상기 검증이 실패하면 에러 메시지를 리턴할 것이다. 그렇지 않으면, 그것은 상기 승인을 확인할 것이다. 상기 이동 단말기(4)는 상기 원격 서비스(3)로부터의 승인 응답을 체크(17)할 것이고, 에러 메시지가 수신되었으면 종료할 것이다.
확인 응답과 함께, 상기 요청이 성공적이고 유효한 경우, 상기 이동 단말기(4)는 이용 가능한 자산들에 대한 정보를 수신할 것이다. 상기 자산 정보는 임의의 로컬 자산들(상기 이동 단말기(4) 상에 로컬로 저장된 자산들)에 대해 체크되고(18), 상기 원격 서비스(3)에서 이용 가능한 상기 자산들이 더 새로운 경우, 상기 고객 애플리케이션(8)은 상기 새로운 자산들로 업데이트할지 여부를 결정하기 위해 통지된다(19). 상기 고객 애플리케이션(19)이 상기 새로운 자산들을 다운로드하기로 결정하면(20), 상기 파일들이 다운로드될 것이다(21). 상기 SDK(7)는 애플리케이션 식별자(상기 애플리케이션 식별자는 예를 들어, API 키의 고객 자격 증명들의 일부일 수 있음) 및 상기 원격 서비스(3)로부터 상기 SDK를 실행하는 장치의 하드웨어 식별자와 연관된 특정 처리 구성을 요청한다. 상기 처리 구성은 암호화된 포맷으로 상기 원격 서비스에 의해 제공된다. 상기 SDK(7)는 비밀 키를 사용하여 상기 원격 서비스로부터 수신된 상기 암호화된 처리 구성을 복호화한다(상기 비밀 키는 상기 SDK(7)에 임베딩될 수 있음). 상기 복호화 이후, 상기 처리 구성은 인증되며, 예를 들어 해시가 컴퓨팅되고 상기 원격 서비스(3)에 의해 제공된 기준 해시와 비교된다. 상기 인증이 성공하면, 상기 로컬 파일들은 상기 수신된 자산들로 대체된다(22). 이러한 방식으로, 본 방법은 광학 문자 인식을 수행하기 위해 하나 이상의 데이터 처리 동작들을 적용하기 전에, 상기 처리 구성이 상기 제공된 자산들의 일부로서 상기 원격 서비스(3)로부터 로딩되는 것을 포함한다.
그 다음, 모든 자산들이 다운로드되고 대체되는 경우, 상기 자산 업데이트 절차가 종료됨이 상기 고객 애플리케이션(8)에 통지될 것이다(23). 상기 고객 애플리케이션(8)이 스캐닝 처리를 시작(24)하기 위해 상기 OCR SDK(7)에 통지할 때, 상기 자산들은 구성 해석기에 로딩될 것이다(25). 상기 해석기는 상기 원격 서비스(3)로부터 수신된 상기 처리 구성을 검증한다. 상기 검증은 여러 기준들, 예를 들어, 모든 고정된 파라미터들이 유효 범위 내에서 유효 크기를 갖는지 여부 및 데이터 처리 기능들의 파라미터들로서 사용되는 모든 기준들이 예를 들어, 이전에 호출된 데이터 처리 기능들의 출력들로서 사용되기 전에 유효하게 정의되는지 여부를 체크할 수 있다. 상기 원격 서비스(3)로부터 수신된 상기 처리 구성이 유효하지 않다고 결정되면, 이전에 캐싱된 처리 구성이 로딩된다. 이러한 목적을 위해, 상기 SDK(7)는 초기에 캐싱된 유효 범용 처리 구성으로 배치될 수 있다. 상기 수신된 처리 구성이 유효하면, 그것은 대체될 것이며, 이에 의해 아래에 설명된 바와 같이 광학 문자 인식을 위해 사용되는 상기 처리 구성을 변경할 것이다.
성공적인 검증 이후, 상기 이미지 제공자(보통 이동 단말기(4)의 통합 카메라)로부터 새로운 프레임들을 리트리브하기 위한 루프(26)가 시작될 것이다. 상기 스캔 처리는 이미지 제공자에게 새로운 이미지를 요청하고(27), 새로운 이미지가 이용 가능하면(28), 상기 광학 문자 인식이 수행된다. 상기 새로운 입력 이미지의 상기 이미지 데이터는 상기 이미지 제공자로부터 수신된다. 상기 입력 이미지의 상기 이미지 데이터를 수신하는 것은 이미지 센서로 하나 이상의 이미지들을 캡처하는 것을 포함한다. 상기 입력 이미지는 통상적으로 하나 이상의 문자들을 포함한다. 이러한 이미지는 상기 해석기를 통해 로딩된 상기 처리 구성에 따라 처리될 것이다(29). 따라서, 하나 이상의 데이터 처리 동작들이 상기 수신된 이미지 데이터에 적용된다. 상기 데이터 처리 동작들 중 적어도 하나는 상기 입력 이미지의 하나 이상의 문자들을 반환하도록 구성된다. 각각의 데이터 처리 동작은 상기 처리 구성에 따라 이용 가능한 데이터 처리 기능들의 미리 정의된 세트로부터 선택된다. 상기 이용 가능한 데이터 처리 기능들은 프리컴파일된 기능들이다.
상기 처리 구성은 또한 상기 SDK의 초기화 후에 런타임 시에 변경될 수 있다. 예를 들어, 상기 자산 저장소(13)는 상기 SDK(7)에 업데이트 통지를 전송할 수 있다. 그것이 상기 업데이트 통지를 수신할 때, 상기 SDK(7)는 위에서 설명된 것과 유사한 방식으로 상기 자산 저장소(13)로부터 업데이트된 처리 구성을 다운로드할 수 있고, 상기 SDK(7)에 의해 상기 입력 이미지들에 적용되는 상기 데이터 처리 동작들을 결정하는 상기 처리 구성을 대체할 수 있다.
상기 처리가 이미지 품질 또는 다른 기준들로 인해 성공적이지 않고 어떠한 결과(30)도 이용 가능하지 않다면, 상기 처리가 중단되거나 상기 처리가 스캔 결과가 발견되었다고 결정할 때까지, 상기 스캔 처리는 다음의 이용 가능한 이미지에 대해 요청할 것이고, 상기 새로운 이미지에 대해 이미지 처리를 다시 시작할 것이다. 이미지 데이터를 수신하고 하나 또는 그 초과의 데이터 처리 동작들을 적용하는 단계들은 입력 이미지들의 시퀀스에 대해 반복될 수 있고 병렬로 또는 교번하여 실행될 수 있다. 상기 반복 레이트는 1 Hz 또는 그 초과, 예를 들어, 1 Hz 내지 10 Hz일 수 있다. 특정한 하드웨어 플랫폼에 대한 상기 처리 구성은 상기 처리 구성이 이동 단말들에 배치되기 전에 하나의 반복의 지속 기간을 결정하기 위해 (예를 들어, 테스트 장치들 상에서 또는 적절하게 제한된 가상 하드웨어 상에서) 원격으로 벤치 마킹될 수 있다. 일단 상기 처리가 결과가 발견되었다고 결정하면(예를 들어, 동일한 결과가 미리 정의된 길이의 이미지들의 시퀀스에 대해 관측될 때), 상기 애플리케이션은 상기 스캔 결과로 통지(31)될 것이다.
상기 처리 구성은 상기 데이터 처리 동작들(즉, 그것들의 총 수, 타입 및 시퀀스) 및 각각의 데이터 처리 동작의 파라미터화를 결정한다. 따라서, 상기 시스템은 임의의 코드 변경들 및 재컴파일링의 필요성 없이 즉석에서 (상기 처리 구성에 의해 정의된 바와 같은) 전체 컴퓨터 비전 파이프라인을 최적화하거나 완전히 상호 교환하는 능력을 갖는다. 동시에, 상기 파이프라인의 빌딩 블록들, 즉, 데이터 처리 기능들은 컴파일링되고 플랫폼 최적화된다(예를 들어, C++ 코드).
도 3a 및 도 3b는 도 2와 관련하여 위에서 설명된 단계들과 위에서 도 1과 관련하여 설명된 바와 같은 시스템 구조 사이의 관계를 예시한다. 도 3a는 상기 SDK(7)의 초기화를 커버하고 도 3b는 상기 스캐닝을 커버한다.
도 4 및 도 5는 처리 구성들, 데이터 처리 동작들 및 데이터 처리 기능들의 최소 예들을 도시한다. 도면들 둘 다는 3-채널 컬러 이미지를 단일-채널 그레이스케일 이미지로 변환하는 단순한 CV 알고리즘을 예시한다. 상기 처리 구성을 파싱하고 적용하는 인터프리터의 능력들을 입증하기 위해, 2개의 버전들이 제공된다.
보다 복잡한 버전(도 5)은 보다 동사적인 방식(verbose manner)으로 개별 단계들을 수행하지만, 전체 알고리즘은 단일 데이터 처리 함수(32)로 단순화될 수 있다. 도 5에 도시된 상기 이미지 처리의 단계들은 다음과 같다: 컬러 이미지 입력에서(At INPUT COLOR IMAGE IMG)(단계(33)), 상기 현재 이미지는 상기 카메라 스트림에 의해 제공되며, 이는 촬영되고 추가로 처리된다. 상기 이미지는 3-채널 컬러 이미지(RGB)이다. R, G, B = SPLITCHANNELS(IMG)에서(단계(34)), 상기 SPLITCHANNELS 함수가 호출되며, 이는 3-채널 이미지의 개별 채널들을 3개의 단일-채널 이미지들로 분할하는 것을 담당한다. R = R * 0.299에서(단계(35)), 상기 이미지에서 적색 컬러의 밝기를 설명하는 상기 단일-채널 이미지의 픽셀들은 표준 0.299 계수와 곱해진다. G = G * 0.857(단계(36))는 녹색 채널에 대한 단계(35)와 유사하다. B = B * 0.114(단계(37))는 청색 채널에 대한 단계(35)와 유사하다. GRAYIMG = R + G + B에서(단계(38)), 이전에 가중된 컬러 채널들의 픽셀-단위 합이 컴퓨팅된다. 흑백 출력에서(At OUTPUT GRAYIMG)(단계(39)), 상기 변환된 그레이스케일 이미지는 상기 고객 애플리케이션으로 반환된다.
도 4에 도시된 간단한 버전에 따른 상기 이미지 처리의 단계들은 다음과 같다: 컬러 이미지 입력(At INPUT COLOR IMAGE IMG)(단계(40))에서, 현재 이미지는 카메라 스트림에 의해 제공되며, 이는 촬영되고 추가로 처리된다. 상기 이미지는 3-채널 컬러 이미지(RGB)이다. GRAYIMG = GRAYSCALE(IMG)(단계(32))에서, 상기 그레이스케일 이미지는 상기 입력 이미지의 개별 컬러 채널들의 선형 조합을 통해, 단일 동작으로 컴퓨팅된다. 복잡한 버전과 비교하여, 여기서 상기 컬러 변환 알고리즘은 최적화된 C++ 코드에서 단일 사전컴파일된 데이터 처리 기능으로 구현된다. 흑백 출력(OUTPUT GRAYIMG)(단계(41))에서, 상기 변환된 그레이스케일 이미지는 고객 애플리케이션으로 반환된다.
도 6은 디스플레이로부터 심볼들을 판독하기 위해 사용된 실제 예에 관한 것이다. 본질적으로, 본 예의 상기 처리 구성은 US 2017/0177968 A1에 개시된 방법의 구현이다. 본 구성의 적용 및 실행 가능성에 관한 세부 사항에 대해, US 2017/0177968 A1의 내용, 특히 도 3 및 관련 설명이 본 명세서에 참조로 포함된다. 도 6에 따른 상기 이미지 처리의 단계는 다음과 같다: 최소 외곽선 입력 단계에서(At INPUT MINOUTLINES)(단계 42), 입력 파라미터는 상기 처리 구성 전체에 걸쳐 나중에 사용될 수 있는 상기 고객 애플리케이션으로부터 수신된다. 여기서, 상기 입력 파라미터 최소 외곽선(MINOUTLINES)은 혈당 측정기의 디지털 디스플레이 상에서 발생하는 예상되는 7개의 세그먼트 숫자의 최소 수이다. 이미지 단계에서(단계 43), 상기 현재 이미지는 상기 카메라 스트림에 의해 제공되며, 이는 취해지고 추가로 처리된다. 상기 이미지는 3-채널 컬러 이미지(RGB)이다. 상기 알고리즘이 상기 결정 노드들 중 하나에서 중단되는 경우(단계 44, 45 또는 46), 새로운 이미지가 상기 카메라 스트림으로부터 취해지고 처리된다. 임계화 단계에서(단계 47), 상기 입력 3-채널 RGB 이미지는 먼저 단일-채널 그레이스케일 이미지로 변환되고, 이어서 임계화된다. 여기서, 상기 그레이스케일 이미지는 범위 0, 255의 이산 정수 값을 가진다. 상기 임계화 동작은 본 범위를 정확히 2개의 값 {0, 1}을 가지는 이미지의 이진화된 버전으로 매핑하여, 값 1을 가지는 관련 픽셀 및 값 0을 가지는 배경 또는 비관심 픽셀을 강조한다. 상기 임계화 단계는 상기 처리 구성과 함께 제공되는 그레이스케일 값이다. 외곽선 검출 단계(단계 48)에서, 상기 이진화된 이미지는 입력으로서 취해지고, 상기 이미지 내의 오브젝트들을 나타내는 외곽선들이 발견된다. 본 맥락에서 외곽선들은 특정 길이의 라인들 및 외곽선들을 나타내는 8-이웃(8-neighborhood)에서 연결된 픽셀이다. 적용될 수 있는 공지된 외곽선 검출 알고리즘이 있다. 외곽선 카운트 단계에서(단계 49), 발견된 외곽선의 수가 카운트된다. 노드 #OUTLINES >= MINOUTLINES 결정 단계에서(단계 44), 발견된 외곽선들의 수가 최소 외곽선 이상이면, 상기 알고리즘은 단계 50으로 계속되고, 그렇지 않으면 상기 카메라 스트림으로부터의 새로운 이미지가 단계 43에서의 처리를 위해 취해진다. 최대 외곽선 발견 단계에서(단계 50), 즉 충분한 외곽선들이 발견되었다고 확립되면, 최대 외곽선들이 다음 단계를 위해 고려된다. 여기서, 상기 최대 외곽선은 디지털 디스플레이를 나타내고, 직사각형 형상을 가지는 것으로 예상된다. 이것은 숫자의 인식을 위한 입력 이미지의 관련 부분("관심 영역")이다. 원근 보정 단계에서(단계 51), 상기 디지털 디스플레이를 나타내는 직사각형이 발견되면, 직사각형은 상기 외곽선 상에 피팅되고, 상기 디스플레이의 정면 뷰로 관점적으로 변환된다. 이러한 방식으로 디지털 7개의 세그먼트 숫자는 왜곡되지 않은 방식으로 분석될 수 있다. 직사각형 절단 단계에서(단계 52), 상기 발견된 직사각형은 변환된 그레이스케일 입력 이미지로부터 절단되어, 불필요한 픽셀이 더 이상 처리되지 않고 처리 전력을 절약할 수 있다. 임계화 단계에서(단계 53), 상기 원근으로 변환된 이미지는 7개의 세그먼트 숫자가 상기 디스플레이의 나머지(값 0)로부터 명확하게 분리되는(값 1) 방식으로 다시 임계화된다. 7개의 세그먼트 숫자들의 발견 단계에서(단계 54), 상기 이미지가 임계화되면, 상기 연결된 이진 영역들의 외곽선들이 발견되고, 개별 세그먼트들이 맞춰진다. 여기서, 각각의 숫자는 다수의 유사하게 보이는 세그먼트들로 구성될 것이다. 결정 노드에서 숫자 발견 여부에 따라(단계 45), 충분한 숫자들이 발견되면, 상기 알고리즘은 단계 55로 계속되고, 그렇지 않으면, 단계 43에서 처리를 위해 상기 카메라 스트림으로부터의 새로운 이미지가 취해진다. 숫자 분류 단계에서(단계 55), 상기 발견된 숫자들은 숫자들로 분류된다. 이것은 특정 에러 허용 오차를 가지는, 7개의 세그먼트 숫자들에 대한 미리 계산된 템플릿들을 통해 행해진다. 결정 노드에서 숫자 클라우드의 분류 여부에 따라(단계 46), 발견된 숫자 내의 모든 개별 세그먼트가 분류될 수 있으면 알고리즘은 단계 56으로 계속 진행되고, 그렇지 않으면 단계 43에서 처리를 위해 카메라 스트림의 새 이미지가 취해진다. 결과 처리 단계에서(56단계), 상기 혈당계가 여러 줄로 구성되어 있으므로, 상기 결과 분류가 올바른 형식으로 지정되고 합리적인 값에 대해 유효성이 검사된다. 상기 대응하는 형식 및 유효성 검사 파라미터는 해당 특정 사용 사례에 맞게 조정된 처리 구성의 일부이다. 결과 출력 단계에서(단계 57), 최종 인식된 문자열 결과가 고객 애플리케이션에 반환된다.
도 7 및 도 8은 본 방법의 맥락에서 인공 신경망(또는 간단히 "신경망")의 사용에 관한 것이다. 상기 데이터 처리 동작 중 적어도 하나는 하나 이상의 인공 신경망을 통해 데이터를 전파하는 단계를 포함할 수 있으며, 상기 하나 이상의 인공 신경망의 네트워크 구성은 런타임에 변경될 수 있다. 상기 알고리즘에 사용되는 상기 신경망의 아키텍처뿐만 아니라 다른 개별 단계 및 이들의 상호작용은 모바일 및 임베디드 장치들에 대해 성능 최적화되어, 서버/백엔드에 대한 연결 없이 상기 장치 상에서의 오프라인 실행이 가능하다. 이는 기본적으로 상기 신경망들의 상기 개별 입력과 출력 사이의 접착제로서 작용한다. 신경망들이 상기 처리 구성("파이프라인")에 사용되는 경우, 네트워크 구성은 상기 하나 이상의 데이터 처리 동작을 적용하기 전에 원격 서비스로부터 로딩될 수 있다. 상기 네트워크 구성은 하나 이상의 신경망에 대한 구성을 포함할 수 있다. 로딩되는 하나 초과의 네트워크 구성이 있을 수 있다. 상기 네트워크 구성(들)은 상기 자산 저장소(13)로부터 검색된 자산들의 일부이다. 도 7에 따른 상기 이미지 처리의 단계들은 다음과 같다: 최소 외곽선 입력 단계에서(단계 58), 상기 스크립트 전체에 걸쳐 나중에 사용될 수 있는 (사용자 입력을 또한 통과할 수 있는) 상기 고객 애플리케이션으로부터의 입력 파라미터들이 수신된다. 구체적으로, 상기 파라미터 최소 외곽선은 단계 59에서 요구되는 외곽선들의 최소 수이므로, 상기 처리가 계속된다. 이미지 입력 단계에서(단계 60), 상기 이동 단말기(4)의 카메라 스트림에 의해 제공되는 상기 현재 이미지가 추가 처리를 위해 수신된다. 상기 이미지는 3-채널 컬러 이미지(RGB)이다. 상기 알고리즘이 상기 결정 노드(59)에서 중단되는 경우, 새로운 이미지가 상기 카메라 스트림으로부터 수신되고 처리된다. 신경망을 사용하는 문자 검출 단계에서(단계 61), 상기 입력 이미지는 먼저 상기 검출 신경망에 대해 적절하게 사전-처리된다. 이러한 사전-처리는 상기 이미지의 그레이스케일 표현으로의 컬러 변환, 또는 이미지의 품질을 개선하거나 필요한 데이터를 추출하기 위해 다른 저-레벨 이미지 처리 기술을 적용하는 것과 같은 다수의 단계를 포함할 수 있다. 또한, 예를 들어 거짓 양성 검출의 필터링과 같은 상기 검출의 일부 사후-처리가 본 단계에 적용될 수 있다. 외곽선 카운트 단계에서(단계 62), 문자들의 수가 계산된다. 상기 노드 #CONTOURS >= MINCONTOURS 결정 단계에서(단계 59), 나머지 외곽선의 수가 상기 입력 파라미터 MINCONTOURS 이상이면, 알고리즘은 단계 63으로 계속되고, 그렇지 않으면 카메라 스트림으로부터의 새로운 이미지가 단계 60에서의 처리를 위해 수신된다. 신경망을 사용하는 문자 분류 단계에서(단계 63), 상기 검출된 문자들은 상기 입력 이미지의 상기 이미지 데이터로부터 추출되고 상기 분류 네트워크에 대해 사전-처리된다. 이러한 사전-처리는 글로벌 콘트라스트 정규화, ZCA 화이트닝, 또는 상기 문자들의 추출된 이미지에 적용되는 다른 정규화 알고리즘을 포함할 수 있다. 결과 처리 단계에서(단계 64), 상기 분류 네트워크의 출력이 사후-처리된다. 이는 이전 결과의 일부 형태의 늦은 융합, 일부 이전 지식 또는 체크 숫자 알고리즘(예를 들어, Luhn)을 사용하는 검증, 또는 또한 일부 잘 알려진 에러 정정 알고리즘(예를 들어, Reed-Solomon)을 통한 에러 정정을 포함할 수 있다. 결과 출력(단계 65)에서, 최종 인식된 스트링 결과가 상기 고객 애플리케이션으로 반환된다.
본 발명 내용 내에서 그리고 런타임에서 상기 처리 구성 및 상기 네트워크 구성(들)을 변경할 가능성으로 인해, 최첨단 알고리즘을 가지는 상기 신경망 주위의 전체 컴퓨터 비전 파이프라인은 반복적인 개선에 의해 사용 사례에 대해 자동으로 최적화될 수 있다. 시작부터 종료까지의 상기 처리 구성은 완전히 교환될 수 있고, 모든 알고리즘 파라미터는 트레이닝 단계 동안 조정될 수 있다. 상기 트레이닝된 신경망을 포함하는 이러한 처리 구성은 데이터 처리 기능을 구현하는 고도로 최적화된 C++ 이진 코드를 재컴파일하거나 대체하지 않고 무선으로 이동 장치들에 자동으로 배치될 수 있다. 상기 처리 구성은 단순히 상기 SDK(7)에 의해 로딩되고, 상기 이미지들의 처리는 이에 따라 상기 이진 코드 내에 설정된다.
도 8에 도시된 바와 같이, 생산에서, 모든 스캔에 대해, 최종 이미지는 저장되고 추후 재 훈련을 위해 상기 원격 서비스(3), 더 구체적으로 상기 자산 서비스(10)에 전송될 수 있다(단계(66)). 상기 네트워크 연결이 불량하면, 이미지들은 상기 연결이 이용 가능할 때 캐싱되고 전송될 수 있다. 상기 플랫폼에서, 상기 들어오는 생산 이미지들은 훈련을 위해 자동으로 주석이 달리고(단계(67)), 충분한 새로운 이미지들이 이용 가능할 때(결정 노드(69)), 이미지 데이터베이스에 추가되고(단계(68)), 상기 이미지들은 테스트 코퍼스 및 훈련 코퍼스로 분할된다(단계(70)). 그렇지 않으면, 상기 원격 서비스(3)는 더 많은 이미지를 기다린다(단계(71)).
상기 훈련 코퍼스에 기초하여, 데이터 증강 방법들이 적용된다(단계(72) 및 단계(73)). 상기 데이터 증강 방법은 컴퓨터 비전 기반 이미지 변환들 또는 기계 학습 기반 이미지 생성을 포함할 수 있다. 상기 사용 사례에 기초하여, 회전, 스케일링, 블러링, 반전, 색상 시프트, 채도 변화 등과 같은 다양한 컴퓨터 비전 방법이 적용될 수 있다. 기계 학습 접근법은 Generative Adversarial Networks, Variational Auto-Encoders 등과 같은 생성 파라미터화된 솔루션을 포함하거나 포함하지 않을 수 있다. 자동 재훈련은 상기 검출 네트워크(단계(74)) 및 상기 분류 네트워크(단계(75))에 대해 시작된다. 상기 처리 구성의 수동 최적화 및 구성이 있을 수 있다(단계(76)). 상기 검출 네트워크 및 상기 분류 네트워크의 재훈련으로부터 발생하는 새로운 네트워크 구성을 포함하는 상기 새로운 처리 구성은 정확도를 검증하기 위해 상기 테스트 코퍼스에 적용된다(단계(77)). 상기 최종 정확도가 상기 마지막 배치된 자산 중 하나보다 양호하면(결정 노드(78)), 상기 새로운 버전은 상기 자산 저장소(13)에 푸시되고(단계(79)), 상기 이동 단말기(4)에 동기화될 것이다. 정확도가 악화되면, 이러한 훈련을 위한 상기 새로운 이미지들은 수동 검사를 위해 플래깅되고(단계(80)), 재훈련은 폐기된다(단계(81)).
상기 입력 이미지는 특별히 설계되고 훈련된 신경망들이 개별 문자를 검출하기 위해 적용되기 전에 한 쌍의 전-처리 단계를 거칠 수 있다. 이들 문자는 그 후 추출되고, 분류되며, 후-처리된다. 상기 단계는 동일한 텍스트가 입력 이미지들의 시퀀스에서 발생할 때까지 반복될 수 있다(예를 들어, 상기 이동 장치로부터 오는 라이브 카메라 스트림으로부터 획득된다). 그 후, 최종 결과는 상기 사용자에게 출력되고, 예를 들어 추가 처리 및 사용을 위해 고객 애플리케이션에 디스플레이되거나 제공된다.
상기 자동화된 훈련 플랫폼은 신경망을 자동으로 훈련하고, 전술한 알고리즘을 사용하여 정확도 및 성능을 평가하고, 최종적으로 상기 이동 단말기(4) 상에 모두 배치할 수 있다. 상기 서비스 측 훈련은 상기 이동 단말기(4)를 국부적으로 훈련할 필요가 없게 한다. 특수한 적응이 필요한 경우, 컴퓨터 비전 엔지니어는 이러한 알고리즘을 추가 개선을 위한 기반으로 사용할 수 있다.
본 발명의 범위는 도 1의 상기 데이터 처리 장치가 도 2 내지 도 8 중 임의의 것과 관련하여 설명된 방법의 단계들을 실행하게 하는 명령어들을 포함하는 컴퓨터 프로그램 및 그러한 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독 가능 매체로 확장된다.
본 발명은 특히 일련 번호 스캐닝을 위한 그리고 구체적으로 TINs의 스캐닝을 위한 본 방법의 사용에 적용된다.
Claims (14)
- 광학 문자 인식을 위한 컴퓨터 구현 방법으로서(computer-implemented method for optical character recognition),
하나 이상의 문자를 포함하는 입력 이미지의 이미지 데이터를 수신하는 단계; 및
상기 수신된 이미지 데이터에 하나 이상의 데이터 처리 동작을 적용하는 단계;
를 포함하되,
상기 데이터 처리 동작 중 적어도 하나는 상기 입력 이미지의 상기 하나 이상의 문자를 반환하도록 구성되고,
각각의 데이터 처리 동작은 처리 구성에 따라 사전 정의된 세트의 이용 가능한 데이터 처리 기능들로부터 선택되고,
상기 이용 가능한 데이터 처리 기능은 사전 컴파일된 기능이고,
상기 방법은:
상기 하나 이상의 데이터 처리 동작을 적용하는 단계 이전에,
런타임 시에 원격 서비스로부터 상기 처리 구성을 로딩하는 단계;
를 추가 포함하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항에 있어서,
상기 처리 구성은:
데이터 처리 동작의 총 수, 2개 이상의 상이한 데이터 처리 동작의 시퀀스 및 상기 하나 이상의 데이터 처리 동작의 파라미터화 중 하나 이상을 결정하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항 또는 제2항에 있어서,
상기 방법은:
상기 하나 이상의 데이터 처리 동작을 적용하는 단계 이전에,
상기 원격 서비스로부터 수신되는 상기 처리 구성을 검증하는 단계;
를 추가 포함하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항 또는 제2항에 있어서,
상기 방법은:
상기 원격 서비스로부터 수신되는 상기 처리 구성이 유효하지 않다고 결정하는 단계; 및
이전에 캐싱된 처리 구성을 로딩하는 단계;
를 추가 포함하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 방법은:
상기 방법을 실행하는 장치의 하드웨어 식별자 및/또는 애플리케이션 식별자와 연관되는 특정 처리 구성을 상기 원격 서비스로부터 요청하는 단계;
를 추가 포함하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 원격 서비스로부터 상기 처리 구성을 로딩하는 단계는,
상기 원격 서비스로부터 암호화된 처리 구성을 수신하는 단계 및
비밀 키를 사용하여 상기 원격 서비스로부터 수신된 상기 암호화된 처리 구성을 복호화 하는 단계;
를 포함하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 방법은:
상기 하나 이상의 데이터 처리 동작을 적용하는 단계 이전에,
상기 처리 구성을 인증하는 단계;
를 추가 포함하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항 내지 제7항 중 어느 한 항에 있어서,
상기 데이터 처리 동작 중 적어도 하나는, 하나 이상의 인공 신경망을 통해 데이터를 전파하는 단계를 포함하되,
상기 하나 이상의 인공 신경망의 네트워크 구성은 런타임 시에 변경될 수 있는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제8항에 있어서,
상기 방법은:
상기 하나 이상의 데이터 처리 동작을 적용하는 단계 이전에,
원격 서비스로부터 네트워크 구성을 로딩하는 단계;
를 추가 포함하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항 내지 제9항 중 어느 한 항에 있어서,
상기 입력 이미지의 이미지 데이터를 수신하는 단계는,
이미지 센서로 하나 이상의 이미지를 캡처하는 단계;
를 포함하는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제10항에 있어서,
상기 이미지 데이터를 수신하는 단계 및 하나 이상의 데이터 처리 동작을 적용하는 단계는,
입력 이미지들의 시퀀스에 대해 반복되고 병렬로 또는 교대로 실행되는,
광학 문자 인식을 위한 컴퓨터 구현 방법. - 제1항 내지 제11항 중 어느 한 항의 상기 방법의 단계들을 수행하기 위한 수단들을 포함하는,
데이터 처리 장치. - 제12항의 상기 데이터 처리 장치가 제1항 내지 제11항 중 어느 한 항의 방법의 단계들을 실행하게 하는 명령어를 포함하는,
컴퓨터 프로그램. - 제13항의 상기 컴퓨터 프로그램을 저장하는,
컴퓨터 판독 가능한 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP19200582.5A EP3798898A1 (en) | 2019-09-30 | 2019-09-30 | Computer-implemented method for optical character recognition |
EP19200582.5 | 2019-09-30 | ||
PCT/EP2020/077362 WO2021064018A1 (en) | 2019-09-30 | 2020-09-30 | Computer-implemented method for optical character recognition |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220073778A true KR20220073778A (ko) | 2022-06-03 |
Family
ID=68158892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227013690A KR20220073778A (ko) | 2019-09-30 | 2020-09-30 | 광학 문자 인식을 위한 컴퓨터 구현 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220327849A1 (ko) |
EP (2) | EP3798898A1 (ko) |
JP (1) | JP7445753B2 (ko) |
KR (1) | KR20220073778A (ko) |
WO (1) | WO2021064018A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102693414B1 (ko) * | 2021-08-20 | 2024-08-09 | 대한민국 | 현출된 충격흔 분석 장치, 방법 및 컴퓨터 프로그램 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08305846A (ja) * | 1995-03-07 | 1996-11-22 | Matsushita Electric Ind Co Ltd | ニューロフィルターと像域分割方法とフィルター装置 |
JP2002342739A (ja) | 2001-05-17 | 2002-11-29 | Kddi Corp | 通信ネットワークを介したニューラルネットワーク処理システム及びそのプログラムを格納したプログラム記憶媒体 |
JP2003122442A (ja) | 2001-10-16 | 2003-04-25 | Sony Corp | ソフトウェア・ダウンロードシステムのための無線データ通信方法および装置 |
JP2013024980A (ja) | 2011-07-19 | 2013-02-04 | Fujitsu Ltd | 表示システム、表示装置および制御方法 |
US20130219307A1 (en) | 2012-02-21 | 2013-08-22 | Artisan Mobile, Inc. | System and method for runtime user interface management |
AT515595A2 (de) | 2014-03-27 | 2015-10-15 | 9Yards Gmbh | Verfahren zur optischen Erkennung von Zeichen |
US10007863B1 (en) * | 2015-06-05 | 2018-06-26 | Gracenote, Inc. | Logo recognition in images and videos |
WO2017087568A1 (en) | 2015-11-17 | 2017-05-26 | Eman Bayani | A digital image capturing device system and method |
GB2552014B (en) * | 2016-07-07 | 2020-05-13 | Advanced Risc Mach Ltd | Reconfigurable artificial neural networks comprising programmable non-volatile memory elements |
US9984471B2 (en) * | 2016-07-26 | 2018-05-29 | Intuit Inc. | Label and field identification without optical character recognition (OCR) |
RU2657181C1 (ru) * | 2017-09-01 | 2018-06-08 | Общество с ограниченной ответственностью "Аби Продакшн" | Способ улучшения качества распознавания отдельного кадра |
EP3682372A4 (en) * | 2017-09-14 | 2021-07-21 | Chevron U.S.A. Inc. | CLASSIFICATION OF STRINGS USING MACHINE LEARNING |
CN109087236B (zh) * | 2018-06-21 | 2023-10-17 | 歌尔股份有限公司 | 多深度学习平台工业图像检测控制方法及系统 |
EP3588364A1 (en) * | 2018-06-21 | 2020-01-01 | Onfido Ltd | Within document face verification |
JP7277128B2 (ja) * | 2018-12-25 | 2023-05-18 | キヤノン株式会社 | 画像処理システム、画像処理方法、プログラム、画像処理装置、情報処理装置 |
-
2019
- 2019-09-30 EP EP19200582.5A patent/EP3798898A1/en not_active Withdrawn
-
2020
- 2020-09-30 KR KR1020227013690A patent/KR20220073778A/ko active Search and Examination
- 2020-09-30 JP JP2022519974A patent/JP7445753B2/ja active Active
- 2020-09-30 WO PCT/EP2020/077362 patent/WO2021064018A1/en active Search and Examination
- 2020-09-30 US US17/754,198 patent/US20220327849A1/en active Pending
- 2020-09-30 EP EP20786260.8A patent/EP4038543A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3798898A1 (en) | 2021-03-31 |
US20220327849A1 (en) | 2022-10-13 |
EP4038543A1 (en) | 2022-08-10 |
JP2023502307A (ja) | 2023-01-24 |
JP7445753B2 (ja) | 2024-03-07 |
WO2021064018A1 (en) | 2021-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108900776B (zh) | 用于确定响应时间的方法和装置 | |
CN110766033B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN108491809B (zh) | 用于生成近红外图像生成模型的方法和装置 | |
US11514263B2 (en) | Method and apparatus for processing image | |
CN111985281B (zh) | 图像生成模型的生成方法、装置及图像生成方法、装置 | |
US11288798B2 (en) | Recognizing pathological images captured by alternate image capturing devices | |
CN115769193A (zh) | 用于经由web环境与个体进行交互的基于人工智能的成像系统和方法 | |
CN107729928A (zh) | 信息获取方法和装置 | |
CN110610117A (zh) | 一种人脸识别方法、装置及存储介质 | |
CN108399401B (zh) | 用于检测人脸图像的方法和装置 | |
CN110427998A (zh) | 模型训练、目标检测方法及装置、电子设备、存储介质 | |
US11068682B2 (en) | QR code generation method and apparatus for terminal device | |
CN115937356A (zh) | 图像处理方法、装置、设备及介质 | |
JP7445753B2 (ja) | 光学文字認識のためのコンピュータ実行方法 | |
CN111062374A (zh) | 身份证信息的识别方法、装置、系统、设备及可读介质 | |
CN116524206B (zh) | 目标图像的识别方法及装置 | |
CN110636331B (zh) | 用于处理视频的方法和装置 | |
CN111784726A (zh) | 人像抠图方法和装置 | |
CN111260756A (zh) | 用于发送信息的方法和装置 | |
CN110555799A (zh) | 用于处理视频的方法和装置 | |
CN112150431A (zh) | Ui视觉的走查方法和装置、存储介质、电子装置 | |
CN112699707A (zh) | 一种视频检测方法、设备及存储介质 | |
CN112634460B (zh) | 基于Haar-like特征的户外全景图生成方法及装置 | |
CN112565254B (zh) | 数据传输方法、装置、设备与计算机可读存储介质 | |
FR2974923A1 (fr) | Transmission sure d'image sur terminal non sur |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |