콘텐츠로 건너뛰기
STAGING SERVER
DEVELOPMENT SERVER

OCR vTool#

OCR vTool은 광학 문자 인식(Optical Character Recognition)을 수행하여 이미지 내의 텍스트(단어)를 읽을 수 있도록 해줍니다.

광학 문자 인식의 주요 목적은 이미지 속 객체를 식별하거나 유통기한, 일련번호, 제품 라벨 등의 특정 정보를 읽어내는 것입니다.

OCR vTool은 Image 입력 핀을 통해 이미지를 수신합니다. 결과 단어의 텍스트와 분할된 영역은 Texts 및 Regions 출력 핀을 통해 출력됩니다.

OCR vTool 라이선스를 구매하려면 Basler 웹사이트를 방문하세요.

OCR vTool

작동 원리#

지정된 관심 영역(Region of Interest) 내에서 OCR vTool은 텍스트를 단어와 개별 문자로 분할하고, 각 문자를 문자, 숫자 또는 구두점 같은 특수 문자로 분류합니다.

이름과 달리 OCR vTool은 단일 문자가 아닌 단어를 읽습니다. 최소 단어 길이는 2글자입니다.

텍스트가 여러 줄에 걸쳐 있는 경우, 각 줄은 최소 하나의 단어로 간주됩니다. 한 줄 안의 단어들 사이에 큰 간격이 있는 경우, 알고리즘은 이 단어들을 각각 별개의 개체로 간주합니다.

4단계 마법사를 통해 vTool 설정을 쉽게 구성할 수 있습니다. 설정 변경에 따른 결과를 즉시 피드백으로 확인할 수 있습니다. 각 단계에 대한 자세한 내용은 다음 섹션을 참조하세요.

미리보기 영역#

미리보기 영역은 vTool 설정에서 변경한 내용을 즉시 확인할 수 있는 유용한 도구입니다.

미리보기 영역 위에는 분할된 영역 및 인식된 문자를 둘러싼 경계 상자의 표시 여부를 전환하는 버튼과 영역을 강조 표시하는 버튼 등 두 개의 버튼이 있습니다.

경계 상자, 인식된 문자, 영역 강조 표시를 보여주는 미리보기 영역

경계 상자 및 인식된 문자 표시#

이 버튼을 사용하여 분할된 영역 주변의 경계 상자를 표시하거나 숨길 수 있습니다:

경계 상자 및 인식된 문자 표시/숨기기

인식된 각 문자 위에는 결과 문자가 표시됩니다. 이를 통해 인식이 올바르게 수행되었는지 빠르게 확인할 수 있습니다.

영역 강조 표시가 꺼진 미리보기 영역

영역 강조 표시#

이 버튼을 사용하여 분할된 영역을 강조 표시할 수 있습니다:

영역 강조 표시 아이콘

이를 통해 문자가 완전히 인식되었는지 아니면 부분적으로만 인식되었는지 더 쉽게 확인할 수 있습니다. 이는 대비와 같은 분할 설정을 세부 조정하는 데 유용합니다.

경계 상자 및 인식된 문자가 숨겨진 미리보기 영역

1단계: 초기 설정#

디스크에서 또는 라이브 카메라 이미지를 사용하여 적절한 학습 이미지를 로드하는 것으로 시작합니다. 학습 이미지는 다음 측면에서 검사 이미지와 일치해야 합니다:

  • 텍스트의 위치 및 방향
  • (문자 치수를 수동으로 지정하는 경우) 문자의 크기
    자동 모드에서는 문자의 크기가 다양할 수 있습니다.

OCR vTool을 구성할 때 여러 개의 서로 다른 샘플 이미지를 사용하는 것이 좋습니다. 이렇게 하면 텍스트의 image quality를 더 잘 평가하고, 분할 결과뿐만 아니라 후보의 신뢰도를 확인할 수 있습니다. 이러한 샘플 이미지는 이상적으로 애플리케이션에서 발생할 것으로 예상되는 전체 문자 세트를 다루어야 합니다.

직사각형 설정#

이미지를 로드하면 이미지에 직사각형이 표시됩니다. 이는 텍스트가 위치한 영역을 표시하는 데 사용됩니다. 미리보기 영역 왼쪽에 있는 입력 상자에 값을 수동으로 입력하거나 직사각형의 핸들을 드래그하여 위치, 방향, 크기를 조정할 수 있습니다.

OCR 알고리즘은 문자와 원치 않는 이미지 요소(잡음) 또는 노이즈를 구별할 수 없으므로 영역에는 읽으려는 텍스트만 포함되어야 합니다. 잡음이나 노이즈를 완전히 피할 수 없는 경우, 후처리 단계를 추가하거나 다른 OCR vTools를 추가하여 여러 텍스트 영역을 정의하는 등의 적절한 조치를 취해야 합니다. 또한 이미지마다 텍스트가 모든 방향으로 약간씩 이동할 수 있으므로 직사각형을 텍스트에 너무 딱 맞게 설정하지 마십시오.

영역을 정의할 때 영역 직사각형을 관통하는 화살표를 확인하십시오. 이는 읽기 방향을 나타냅니다. 다른 방향으로 흐르는 텍스트는 읽을 수 없습니다.

OCR vTool이 안정적으로 작동하려면 처리하려는 모든 이미지에서 텍스트의 방향이 거의 동일해야 합니다. 몇 도 정도의 사소한 편차는 허용됩니다. 왼쪽에서 오른쪽으로 텍스트를 읽을 수 있도록 카메라를 배치하는 것이 좋습니다. 텍스트의 방향이 다르지만(고정되어 있음) 일정한 경우, 화살표가 텍스트의 읽기 방향을 가리키도록 하면서 그에 따라 영역 직사각형을 배치하십시오.

텍스트의 위치가 크게 달라지고 텍스트 주변의 배경 공간이 제한된 경우, 텍스트의 안정적인 방향과 위치를 보장하기 위해 전처리 단계로 Image Alignment를 추가해야 합니다.

텍스트를 따르도록 직사각형이 약간 회전된 샘플 이미지입니다.

OCR Basic vTool - 직사각형 설정 예시

글꼴 설정#

이미지의 텍스트에 적합한 글꼴과 해당 문자 세트를 선택하십시오. 일반적으로 이는 애플리케이션 사양이나 인쇄 공정에 따라 결정됩니다.

다음 표에는 사용 가능한 글꼴과 해당 외형 예시가 나열되어 있습니다.

글꼴 이름 설명 외형
Standard Mixed 문서에 자주 사용되는 세리프가 있거나 없는 다양한 글꼴 Standard Mixed Font
Standard Sans-Serif 문서에 자주 사용되는 세리프가 없는 다양한 오피스 글꼴 Standard Sans-Serif Font
OCR-A OCR-A 표준에 정의된 대로 OCR-A Font
OCR-B OCR-B 표준에 정의된 대로 OCR-B Font
Dot Print 도트 프린터로 생성되는 다양한 도트 인쇄 글꼴 Dot Print Font
Pharma 제약 산업에서 사용하는 세리프가 없는 글꼴 Pharma Font
SEMI SEMI 표준에 정의된 반도체 산업에서 사용하는 글꼴 SEMI Font
Handwritten Handwritten numbers Handwritten Font

폰트에 따라 다양한 문자 세트를 사용할 수 있습니다. 문자 세트는 다음 하위 세트 중 일부 또는 전부를 포함할 수 있습니다.

  • 대문자
  • 소문자
  • 숫자
  • 특수 문자
    인식 가능한 특수 문자는 폰트에 따라 다릅니다.

다음 표에는 각 폰트로 인식할 수 있는 문자가 나열되어 있습니다.

글꼴 이름 대문자 소문자 숫자 특수 문자
Standard Mixed Yes Yes Yes - = + < > . # $ % & ( ) @ * e £ ¥
Standard Sans-Serif Yes Yes Yes - / + . $ % * e £ ¥
OCR-A Yes Yes Yes - ? ! / { } = + < > . # $ % & ( ) @ * e £ ¥
OCR-B Yes Yes Yes - ? ! / { } = + < > . # $ % & ( ) @ * e £ ¥
Dot Print Yes No Yes - / . * :
Pharma Yes No Yes - / . ( ) :
SEMI Yes No Yes - .
Handwritten No No Yes n/a

Rejection Class#

Rejection Class를 사용하면 vTool이 인식하지 못한 모호한 결과나 문자를 처리할 수 있습니다. 이러한 문자는 거부된 문자로 분류되며, pylon Viewer에서 나타나는 위치에 따라 서로 다른 물음표 아이콘으로 표시됩니다.

이 아이콘은 설정 대화상자에서 사용됩니다.

설정 대화상자의 Rejection Class용 물음표 아이콘

이 아이콘은 핀 데이터 뷰에서 사용됩니다.

핀 데이터 뷰의 Rejection Class용 물음표 아이콘

Rejection Class를 사용하여 결과의 신뢰도를 더 잘 평가할 수 있습니다. 무엇보다도 confidence는 문자가 학습된 폰트에 얼마나 잘 부합하는지뿐만 아니라 이미지의 인쇄 품질이나 화질도 반영합니다.

가장 높은 confidence 값을 가진 결과가 Rejection Class에 속하는 경우, 이미지의 이 영역은 특정 문자로 명확하게 할당될 수 없습니다. 이는 이미지의 번짐이나 불완전하게 인쇄된 문자로 인해 발생할 수 있습니다. 이러한 현상이 자주 발생한다면 화질이 좋지 않다는 신호입니다. 이 경우 이미지 품질을 개선하거나 후처리 단계에서 해당 문자를 읽을 수 없는 것으로 지정할 수 있습니다. 이 접근 방식을 사용하면 대신 더 낮은 confidence를 가진 문자를 선택할 수 있으므로 안전합니다.

분류 결과가 자주 모호한 경우 정규 표현식(regular expression)을 사용하여 단어 보정을 수행하는 것을 고려해 볼 수 있습니다.

항상 문자를 반환하려면 Allow rejections 옵션을 비활성화하세요.

적절한 설정을 찾으려면 옵션을 활성화 및 비활성화하고 후보 목록 및 인식된 단어와 관련하여 4단계의 결과가 어떻게 달라지는지 확인해 보십시오.

2단계: 문자 치수#

문자 세그멘테이션은 문자의 치수, 즉 너비, 높이, 획 너비와 관련된 몇 가지 가정에 기반합니다. OCR vTool은 이미지 데이터에서 이러한 치수를 직접 도출하는 자동 알고리즘을 지원합니다. 또는 원하는 치수 범위를 수동으로 지정할 수도 있습니다. 20~30픽셀 사이의 문자 높이는 적절한 크기 범위이지만, 더 큰 문자 크기를 지정할 수도 있습니다. 20픽셀 미만의 문자는 더 이상 안정적으로 인식할 수 없습니다.

정보

텍스트 내에서 또는 이미지에 따라 문자 크기가 다른 경우 자동 모드를 사용하십시오. 이렇게 하면 크기에 관계없이 모든 문자를 읽을 수 있습니다.

치수를 수동으로 지정하는 일반적인 사용 사례는 자동 모드가 세그멘테이션에서 불필요한 노이즈를 제거하지 못하는 경우입니다. 이 경우 치수를 수동으로 지정하면 원치 않는 이미지 요소를 제거할 수 있습니다.

3단계: 세그멘테이션 설정#

Contrast#

이미지 내 문자 세그멘테이션은 지정된 최소 명암 값 임계값을 사용하는 임계값 메커니즘을 기반으로 합니다. 최소 명암을 조정하고 미리보기 영역에서 세그멘테이션 결과를 관찰하십시오. 시각화를 개선하려면 미리보기 영역 위의 토글 버튼을 사용하여 영역 세그멘테이션 보기를 활성화하십시오.

모든 문자가 세그멘테이션되고 올바르게 읽히는 최소 명암 설정을 선택하십시오. 원치 않는 노이즈가 감지될 수 있으므로 최소 명암을 너무 낮게 설정하지 마십시오.

사용 가능한 폰트는 밝은 배경의 어두운 문자에만 사용하도록 학습되었으며 의도되었습니다. 이 Polarity 설정이 애플리케이션에 적합한 경우 Dark on light 옵션을 사용하십시오.

어두운 배경의 밝은 문자가 포함된 애플리케이션의 경우 Light on dark 옵션을 사용해야 합니다. 이 경우 전처리 단계에서 이미지가 내부적으로 반전됩니다.

배경보다 밝거나 어두운 텍스트가 포함된 애플리케이션의 경우 Both 옵션을 선택하십시오. 그러나 OCR vTool은 극성이 혼합된 텍스트를 읽을 수 없습니다. 텍스트 영역 내에서 극성이 동일해야 합니다.

간격#

단어에는 점, 쉼표, 하이픈 등 특수 문자가 포함될 수도 있습니다. 대부분은 문장 부호입니다. 그러나 하이픈과 등호는 구분 기호로 간주됩니다.

일부 애플리케이션에서는 이러한 문자를 읽어야 할 수 있습니다. 이 경우 특수 문자가 포함된 문자 집합을 선택하고 Punctuation 및 Separators 옵션을 활성화하십시오.

다른 애플리케이션의 경우, 예를 들어 숫자 읽기에만 관심이 있는 날짜를 읽을 때 문장 부호나 구분 기호 없이 단어를 읽는 것을 선호할 수 있습니다. 따라서 숫자 전용 문자 집합을 선택하고 Punctuation 및 Separators 옵션을 비활성화하십시오.

간격 측면에서 개별 문자 사이의 거리도 고려해야 합니다. 텍스트를 개별 영역으로 성공적으로 세그멘테이션하려면 문자 사이에 상당한 간격이 있어야 합니다. 그러나 실제로 문자가 너무 가까이 있어 문자를 구별하기 어려운 경우가 많습니다. 애플리케이션에서 이러한 현상이 발생하는 경우 Separate touching characters 옵션을 활성화하십시오.

Dot Print#

Dot Print 폰트는 문자가 연속적인 획이 아니라 개별 점으로만 형성된다는 점에서 다른 모든 폰트 유형과 다릅니다. 도트 프린트 텍스트를 읽기 위해 OCR vTool은 전용 세그멘테이션 및 분류 옵션을 제공합니다. 이러한 옵션을 사용 가능하게 하려면 마법사의 1단계에서 Dot Print 폰트를 선택해야 합니다. 문자 사이에 충분히 큰 간격이 있고 컴팩트한 도트 프린트 구성표를 가진 일반적인 도트 프린트 문자는 즉시 읽을 수 있습니다.

문자 사이의 간격이 문자 내 점 사이의 간격과 비슷하거나 더 작은 도트 프린트 텍스트의 경우, Basler는 Tight character spacing 옵션을 활성화할 것을 권장합니다.

성공적인 세그멘테이션을 위해서는 문자 점 사이의 간격도 고려해야 합니다. 컴팩트한 도트 프린트 구성표에서는 간격 크기의 변화 없이 점들이 매우 가깝게 배치됩니다. 기본 설정인 Auto 옵션을 활성화하면 이러한 문자를 잘 읽을 수 있습니다. 이 경우 내부 자동 모드가 사용됩니다.

그러나 일부 간격이 다른 간격보다 큰 경우 단일 문자 세그멘테이션이 실패하여 문자가 둘 이상의 영역으로 분할될 수 있습니다. 이러한 상황에서는 Max. dot gap 옵션을 사용하여 허용되는 최대 점 간격을 수동으로 지정하는 것이 도움이 될 수 있습니다. 단, 이 경우 처리 시간이 늘어날 수 있습니다.

4단계: 결과#

마법사의 마지막 단계에서는 단어의 각 문자 위치에 대한 잠재적 후보와 신뢰도 값이 포함된 표를 보여줍니다. 표에서 항목을 클릭하면 미리보기 영역의 해당 경계 상자가 선택되며 그 반대의 경우도 마찬가지입니다.

드롭다운 목록을 확장하여 모든 후보를 확인할 수 있습니다. 후보는 신뢰도 내림차순으로 나열됩니다. 이를 통해 문자 분류의 전반적인 신뢰도를 평가하고 잠재적인 대안을 확인할 수 있습니다.

정보

신뢰도는 0과 1 사이의 값입니다. 이는 문자 인식이 얼마나 잘 되었는지를 나타내는 지표입니다. 매우 우수한 분류 결과는 종종 0.99 이상의 신뢰도 값을 가집니다. 0.9 또는 0.8 미만의 신뢰도 값은 신뢰할 수 없는 분류를 나타낼 수 있습니다.

표 아래에는 Text Recognized 영역이 있습니다. 여기서는 인식된 전체 텍스트가 컴팩트한 형식으로 표시됩니다.

정규 표현식#

OCR에서 흔히 발생하는 문제 중 하나는 숫자 0, 대문자 O, 소문자 o 간의 모호성입니다. OCR-A나 SEMI 같은 명시적인 OCR 폰트는 0과 O를 구별하도록 설계되었지만, 다른 폰트들은 그렇지 않습니다. 정규 표현식을 사용하여 이 문제를 해결할 수 있습니다.

정규 표현식을 사용하면 단어 보정을 수행할 수 있습니다. 단어 보정이란 신뢰도가 가장 높은 후보만 취하는 대신 다른 후보들도 함께 고려하여 정규 표현식에 부합하는 후보 조합을 찾으려고 시도하는 것을 의미합니다.

이렇게 하려면 결과 테이블 위의 입력 필드에 텍스트의 단어 수만큼 정규 표현식을 입력합니다. 정규 표현식은 공백 하나로 구분하세요.

예시: 유통기한(예: "03/2026")을 읽으려고 한다고 가정해 보겠습니다. 주요 목적은 날짜나 시간의 숫자를 읽는 것입니다. 특수문자나 문자도 함께 읽어야 한다고 가정해 봅시다. 이 경우 숫자, 문자, 특수문자가 포함된 문자 세트를 선택하게 됩니다. "(0[1-9]|10|11|12)\/202[4-9]" 정규 표현식을 사용하면 MM/YYYY 날짜 구조를 유지하면서 슬래시도 함께 읽을 수 있습니다.

정보

정규 표현식은 문자를 추가하거나 제거하여 단어 길이를 보정할 수 없습니다. 정규 표현식은 단어 길이에 맞아야 하며, 단어 길이는 모든 이미지에서 동일하게 유지되어야 합니다.

긴 단어의 단어 보정을 수행하면 처리 시간이 늘어날 수 있습니다.

vTool 설정하기#

OCR Basic vTool을 구성하려면:

  1. vTool Settings 영역의 Recipe Management 창에서 Open Settings를 클릭하거나 해당 vTool을 더블 클릭합니다.
    OCR Basic 대화상자가 열립니다.

  2. 이미지를 캡처하거나 엽니다.
    버튼을 사용하여 Single Shot 라이브 이미지를 캡처하거나 Open Image 버튼을 클릭하여 기존 이미지를 엽니다.
    이미지가 로드되면 텍스트 읽기 프로세스가 즉시 시작되고 결과가 미리보기 영역에 표시됩니다.
    창 하단에는 인식된 문자가 공백으로 구분된 단어와 함께 표시됩니다. 이곳의 공간이 제한되어 있어 전체 텍스트가 보이지 않을 수도 있습니다. 이는 인식된 문자 수를 나타내는 지표일 뿐입니다. 전체 텍스트는 마법사의 4단계에서 표시됩니다.
    자세한 내용은 다음을 참조하십시오: 1단계: 초기 설정.
    OCR vTool Settings - Step 1

  3. Rectangle Settings 영역에서 값을 수동으로 입력하여 텍스트 영역을 정의합니다.
    또는 미리보기 영역에 있는 영역 사각형의 핸들을 사용하여 이동, 크기 조절, 회전하여 텍스트를 읽으려는 이미지 부분에 맞출 수 있습니다.
    사각형의 화살표는 텍스트의 읽기 방향을 가리켜야 합니다.

  4. Font Settings 영역에서 다음 옵션을 구성합니다:

    • Font type
    • Character set
    • Rejection class
  5. 클릭 다음.
    다음 단계: OCR Basic 대화 상자가 열립니다.
    자세한 내용은 다음을 참조하십시오: 2단계: 문자 치수.
    vTool 설정 - 2단계

  6. 문자 치수를 감지하기 위한 기본 자동 모드 설정을 유지할지 여부를 결정합니다. 치수를 수동으로 지정하려면 Auto 옵션을 해제하고 문자 너비, 높이, 획 너비에 원하는 범위를 입력합니다.

  7. 클릭 다음.
    Step 3 of the OCR Basic 대화 상자가 열립니다.
    자세한 내용은 다음을 참조하십시오: 3단계: 세그멘테이션 설정.
    vTool Settings - Step 3

  8. 어플리케이션에 따라 대비와 극성을 조정합니다.

  9. 어플리케이션에 따라 간격 옵션을 선택합니다.

  10. Dot Print 글꼴을 선택한 경우, 필요에 따라 옵션을 지정하십시오.

  11. 클릭 다음.
    4단계 / OCR Basic 대화 상자가 열립니다.
    자세한 내용은 다음을 참조하십시오: 4단계: 결과.
    vTool 설정 - 4단계

  12. 분류 표와 텍스트 필드에서 문자 인식 결과를 확인합니다.
    표에서 각 위치를 확장하여 대체 분류 결과를 열 수 있습니다. 분류된 문자와 그 신뢰도가 표시됩니다.
    상세 보기 옵션이 활성화된 경우 표에서 문자를 선택하면 미리보기 영역에서 해당 문자의 바운딩 박스가 강조 표시되며, 반대로 미리보기 영역의 문자 영역을 클릭하여 표에서 해당 문자를 확인할 수도 있습니다.

  13. 필요한 경우 정규 표현식을 입력하여 단어 보정을 수행합니다.
    단어당 하나의 정규 표현식을 입력하십시오. 표현식은 공백으로 구분합니다.

  14. Text Recognized 필드에서 결과 단어를 확인합니다.

  15. Finish를 클릭하여 설정 과정을 완료합니다.

OCR Basic vTool의 결과는 pin data view에서 확인할 수 있습니다. 여기에서 표시할 출력을 선택할 수 있습니다.

입력#

이미지#

Camera vTool 또는 이미지를 출력하는 vTool(예: Image Format Converter vTool)에서 직접 이미지를 허용합니다.

  • 데이터 형식: 이미지
  • 이미지 형식: 8비트~16비트 모노 또는 컬러 이미지. 컬러 이미지는 내부적으로 모노 이미지로 변환됩니다.

출력#

텍스트#

인식된 텍스트 문자열을 반환합니다.

  • 데이터 타입: String Array

Regions#

인식된 텍스트의 영역을 반환합니다.

  • 데이터 타입: Region Array

일반적인 선행 vTools#