표시 검사

engiAI · '텍스트' 버튼
케이블, 파이프, 롤, 포장에 있는 마킹 인식 및 검사

카메라는 프린터 또는 레이저 마커 뒤에 위치합니다. engiAI는 인쇄된 텍스트를 비디오 스트림에서 직접 읽어내어, 지나가는 문자를 조각별로 인식하고, 미리 정의된 기준 또는 목록과 비교하여, 각 마킹을 데이터베이스에 저장하고, 브라우저, JSON, TCP 컨트롤러를 통해 결과를 전송합니다.

1. 영역: 비디오 화면에서 텍스트가 표시되는 부분을 둘러싼 프레임.
2. 인쇄할 문구
3. 분석: 신경망은 각 프레임을 분석합니다.
4. 결과 "인식됨" 또는 "인식되지 않음" + 데이터베이스.
~10 프레임/초
비디오 카드(CUDA)에서 영역 읽기
RU + EN
키릴 문자, 라틴 문자, 숫자, 기호
0 학습
PaddleOCR 모델은 즉시 사용 가능
HTTP + TCP
브라우저, JSON, 컨트롤러 신호

실제 작동 방식

engiAI — 텍스트: 영상 옆 창
왼쪽에는 카메라 영상, 파란색 영역은 인식 영역입니다. 오른쪽에는 텍스트 창: 인식된 영역, 녹색 테두리가 있는 단어, "현재 영역" 문자열

`텍스트 버튼은 engiAI 메인 창의 상단 행에, "종료", "카메라", "트리거", "일반 모델" 및 "계산" 버튼 옆에 위치합니다. 이 버튼은 "텍스트 - 마킹" 창을 엽니다. 이 창은 비디오 위에 띄워놓을 수 있으며, 창이 열려 있거나 마킹 기능이 활성화되어 있을 때 화면 영역이 보입니다.

창 상단에는 모든 탭에 공통적으로 나타나는 세 가지 요소가 있습니다:

  • 텍스트 인식 기능은 주요 스위치입니다. 이 기능이 비활성화되어 있으면 텍스트 인식 기능이 작동하지 않고 프로그램에 부담을 주지 않습니다.
  • ▭ 영역 선택: 마우스 버튼을 누른 채로 비디오 화면의 원하는 영역을 드래그하여 영역을 선택합니다. 창이 열린 상태에서는 마우스 오른쪽 버튼을 눌러도 드래그하여 영역을 조정할 수 있습니다. ✖ 영역 초기화: 이 버튼을 누르면 선택된 영역이 삭제됩니다.
  • 오른쪽 상태: "대기, 기록, 일시 중지 또는 입력 신호에 따라". 아래에는 어떤 장치(GPU CUDA 또는 프로세서)를 사용하고 있는지, 초당 몇 프레임을 읽고 있는지, 그리고 각 프레임당 몇 밀리초가 소요되는지 표시됩니다.
팁. 표시 영역을 더 넓게 보이도록 하고, 움직임 방향에 따라 길게 연장되도록 합니다. 영역 내에 표시가 여러 개일수록 프레임 간의 연결이 더 안정적입니다. 카메라를 설정한 후에는 표시가 선명하고 흐릿하지 않도록 해야 합니다.

"마킹" 탭: 결과 및 샘플과의 비교

engiAI — 텍스트: 기준 문구
"마킹" 탭: 문구 샘플, 영역 미리보기, 현재 영역 및 기록되는 내용, 아래에는 준비된 마킹 목록이 있습니다. 녹색 문자열은 "인식됨", 빨간색 문자열은 "인식되지 않음", 괄호 안에는 샘플과의 일치율이 표시됩니다.

이것은 운영자의 작업 탭입니다. 상단에는 "영역 내 모든 항목과 샘플 비교" 모드가 있습니다:

engiAI — 텍스트: 마킹
"샘플" 필드: 인쇄해야 할 문구, "일치 임계값 (%)": 인쇄가 정확하다고 판단할 기준 비율. 오른쪽은 실제 상태.
1
"영역 내의 모든 항목을 기준과 비교 옵션을 선택하고, "기준" 필드에 전체 문구를 입력하세요. 예를 들어 "Энергокомплект UTCAB-PV1-F 6 4 ТУ BY 300528652.036-2014 EAC 2026 Беларусь"과 같이 입력할 수 있습니다. 대소문자, 공백, 그리고 겉보기에는 동일한 러시아 문자 및 라틴 문자 (예: Т와 T, У와 Y, Е와 E)는 중요하지 않습니다.
2
일치 임계값(%)을 설정하세요. 100은 정확한 일치를 의미하며, 65~80은 인쇄 및 판독 오류를 고려한 값입니다.
3
"텍스트 인식 기능을 활성화합니다. 긴 문장이 화면 전체에 다 들어가지 않으면, 프로그램은 해당 문장이 화면을 통과하는 동안 프레임별로 텍스트를 인식합니다."

컨베이어에서 문구 분석 진행 방식:

  • 녹음은 문장의 시작 부분부터 시작됩니다. 만약 중간에 녹음을 시작했다면, 나머지 부분은 건너뛰고 프로그램은 다음 문장의 시작을 기다립니다.
  • 각 프레임은 샘플 내에서 정확한 위치에 배치되며, 각 글자는 해당 글자가 보이는 모든 프레임에서 "투표"를 받습니다. 최종적으로는 가장 많이 "투표"를 받은 읽기 방식이 선택됩니다. 하나의 프레임에서 발생하는 오류(예: 화면 가장자리에 잘린 글자, 반사광)는 인접한 프레임에 의해 수정됩니다. 느린 속도로 처리할수록 더 많은 프레임이 분석에 참여하므로, 결과가 더욱 정확해집니다.
  • "결과가 출력됩니다. 이는 문장이 전체 영역을 통과하거나, "인식" 탭에 설정된 시간 동안 새로운 문자가 감지되지 않을 때 발생합니다 (즉, 컨베이어가 멈추고 영역이 비어 있는 경우). 결과가 출력되면 프로그램은 다음 문장의 시작을 기다립니다. 연속적으로 입력되는 문장은 각각 개별적으로 기록됩니다."
  • 프로그램은 스스로 이동 방향을 결정하거나, "텍스트 출처" 설정에서 가져옵니다.

문장이 처리되는 동안, 문턱 오른쪽에 “40/64개의 문자 인식됨”이라고 표시되고, “입력됨” 줄에는 일치하는 비율과 추출된 텍스트가 표시됩니다. 결과는 “73% - 인식됨” 또는 “인식되지 않음”으로 표시됩니다. 이 결과는 비디오 위에 크게 표시됩니다.

"샘플 영역 내 모든 항목 비교" 옵션이 선택되지 않은 경우, 순차적인 결합 방식이 적용됩니다. 즉, 모든 문구가 "시작 및 종료" 탭의 규칙에 따라 처음부터 끝까지 기록되며, 필요한 경우 기준 목록과 비교됩니다.

목록 아래에는 제어 기능이 있습니다.

  • 모든 마킹 / 마지막 항목만 – 여기서 표시할 항목과 브라우저에 전달할 항목을 지정하는 방법.
  • 날짜, 시간 및 마킹 / 마킹만 – 브라우저에 전달하고 JSON으로 저장할 내용.
  • ⚖ 비교 — 각 마킹이 지정된 기준과 비교
  • 💾 JSON 저장, 📂 JSON 가져오기 (가져온 데이터가 기준이 됨), 리스트 정리 — 화면과 브라우저에서 항목을 삭제하지만, 데이터베이스에는 남아 있음.

"기준" 탭: 올바른 인쇄 목록

engiAI — 텍스트: 기준
"기준" 탭: 로드된 인쇄, "이것과 비교" 확인란, 유사도 임계값, 기준에 따른 수정 기능.

기준은 여러 종류의 인쇄(다른 섹션, 배치, 고객)가 있을 때, 각 문구를 목록에서 찾을 때 필요합니다.

  • 📂 JSON 파일 가져오기 — 파일에서 가져온 목록: JSON 파일, 문자열 배열, 텍스트 필드가 있는 객체 또는 각 줄에 텍스트가 있는 경우. 중복 항목은 제거됩니다.
  • ✓ 모든 항목 선택, ☐ 모든 항목 해제, 각 행에 체크 표시를 하면 어떤 기준으로 비교할지 선택 가능. ✖ 기준 삭제 – 목록을 삭제
  • 일치율 (정확도, %) – 100%는 정확한 일치 (공백 및 대소문자 구분 없이)를 의미합니다. 100% 미만은 오타 또는 읽기 오류를 포함할 수 있습니다.
  • 기준 값과 비교하여 …% 이상 일치하는 경우: 읽어낸 내용이 지정된 기준과 일정 비율 이상 일치하면, 해당 내용은 기준 값으로 기록됩니다 (원래 읽어낸 내용은 기록에 남아있습니다).

"시작 및 종료" 탭: 하나의 인쇄가 끝나는 위치

engiAI — 텍스트: 시작 및 종료
"시작 및 종료" 탭: 시작 및 종료 텍스트, 종료 후 일시 중지, 빈 공간 시간 및 기록의 최대 길이.

이러한 규칙은 순차적 결합 모드(샘플 없음)에서 작동하며, 프로그램이 자체적으로 마킹의 시작 및 종료 위치를 결정합니다:

  • 시작 텍스트 - 이 텍스트가 인식 구역 내에서 읽히면 기록이 시작됩니다 (예: UTCAB). 비워두면 모든 텍스트에서 시작합니다. 만약 텍스트가 반복적으로 나타난다면, 시작 텍스트가 두 번째로 나타나는 시점에 마킹이 완료됩니다. 시작 텍스트를 마킹에 포함 - 이 옵션을 선택하면 시작 텍스트가 결과에 포함됩니다.
  • 마킹 완료 후, ms 단위의 정지 — 마킹이 완료된 후에는 기록할 내용이 없어야 합니다.
  • 마킹 종료 부분 – 마킹은 이 텍스트가 읽히는 시점에 종료됩니다 (예: BY 또는 2026).
  • 빈 공간 시간, ms – 해당 영역에 텍스트가 없으면 마킹이 완료되고 저장됩니다.
  • 가장 긴 시간 (초) — 연속적인 글쓰기, 띄어쓰기 없이: 각 0초마다 별도의 마킹. 0은 제한 없음.

예: "UTCAB" 시작, "BY" 종료 - "UTCAB … BY"로 기록되고, 그 후 프로그램은 다음 "UTCAB"를 기다립니다. 대소문자를 구분하지 않고, 유사한 러시아 및 라틴 문자들은 동일하게 처리됩니다.

"인식" 탭: 영역, 회전, 모델

engiAI — 텍스트: 인식
"인식" 탭: 영역의 정확한 좌표, 회전 및 확대, 임계값, 새로운 샘플 텍스트의 대기, 컨베이어 방향, 비디오 카드, 허용된 문자 및 기호, 사전을 포함합니다.
  • 이미지 내 영역, 픽셀 - X, Y 좌표, 영역의 너비 및 높이: 원본 이미지 내 영역을 정확하게 지정하고, 마우스 없이.
  • 텍스트 영역 회전 – 텍스트를 수직으로 정렬하려면 영역을 어떻게 회전해야 하는가? 텍스트는 위에서 아래로 – "90° 반시계 방향", 아래에서 위로 – "90° 시계 방향"으로 회전할 수 있습니다. 화면에서 비디오 자체를 회전하려면 "비디오 회전" 탭을 사용하십시오.
  • 확대 - 작은 글자는 확대했을 때 더 잘 보입니다. "자동" 옵션을 선택하면 자동으로 적절한 크기로 조정됩니다.
  • 가장 낮은 신뢰도, % – 낮은 신뢰도로 판독된 문자들은 제거됩니다 (글자의 반점, 글자 경계).
  • 가장 짧은 마킹 길이, 기호 – 짧은 결과는 저장되지 않습니다.
  • 샘플: 새로운 기호가 없으면, MS는 결과를 출력합니다 – 새로운 기호가 도착할 때까지 대기하는 시간은 얼마입니까? (컨베이어가 멈추고, 영역이 비어 있으며, 텍스트가 읽을 수 없는 경우). 결과는 읽은 내용을 바탕으로 출력되고, 새로운 분석이 시작됩니다.
  • 텍스트가 어디에서 생성되는지 – 텍스트가 생성되는 영역의 위치. "자동" 기능은 프레임을 기반으로 작동하며, "붙여넣기" 기능을 사용하면 더 정확하게 결과를 얻을 수 있습니다.
  • 그래픽 카드(GPU)를 사용하는 경우, 특히 NVIDIA의 CUDA 기술을 사용하는 경우, 데이터 읽기 속도가 훨씬 빨라집니다.
  • 문자와 기호 – 제품 라벨에 사용될 수 있는 것: 영어와 러시아어 단어, 단지 영어 단어 또는 모든 기호; 숫자와 공백 – 항상, 기호 (점, 쉼표, 슬래시, 번호 등)는 체크 표시로 표시됩니다. 모델은 허용된 기호만 선택하여 불필요한 기호가 나타나지 않고, 유사한 기호는 더 정확하게 인식합니다.
  • 사전 기반 단어 선택 - 사전에 존재하는 단어 (3자 이상, 숫자나 코드가 아닌 단어) 중, 지정된 비율 이상 일치하는 단어로 대체됩니다. 사전에는 자체 단어 (각 줄에 하나씩)와, 선택된 기준 사전의 단어가 포함됩니다.

이 탭에서 모델을 선택할 수 있습니다: "텍스트 인식 (v3는 빠르지만, v5 서버 버전은 정확도가 더 높으며 그래픽 카드에 적합합니다) 및 텍스트 읽기 (키릴 문자, 라틴 문자 및 숫자; 라틴 문자 및 숫자만; 유럽 언어의 라틴 문자; 정확한 서버 모델; 또는 두 모델을 동시에 사용하여, 두 모델 모두 텍스트를 읽고 더 정확한 결과를 선택합니다). 누락된 모델은 "다운로드" 버튼을 클릭하여 다운로드할 수 있습니다. "현재 영역에서 모델 비교" 버튼을 누르면, 현재 영역의 이미지를 모든 모델을 사용하여 처리하고, 어떤 모델이 사용자의 마킹을 가장 잘 인식하는지, 그리고 처리 시간이 얼마나 걸리는지 확인할 수 있습니다.

모델을 별도로 훈련할 필요가 없습니다. PaddleOCR을 기반으로 구축되어 설치 후 바로 영문, 키릴 문자, 숫자 등을 인식합니다. 설정은 영역, 회전, 허용되는 기호 목록으로 간단하게 이루어집니다.

"데이터베이스" 탭: 모든 마킹이 저장됩니다.

engiAI — 텍스트: 데이터베이스
"데이터베이스" 탭: 저장된 마킹 수, JSON으로 내보내기, 내보내기를 기준값으로 사용 및 정리.

화면에 표시된 목록과 관계없이, 인식된 모든 마킹은 프로그램 데이터베이스에 날짜, 시간, 카메라, 텍스트 및 비교 결과를 저장합니다.

  • 📤 데이터베이스 내보내기 (JSON) – 모든 정보를 파일로 저장하여 보고서 작성하거나 시스템에 전송합니다.
  • 📥 데이터베이스 다운로드 (마킹 → 기준) — 다운로드된 데이터에서 마킹된 텍스트만 추출하여 기준 데이터로 사용합니다. 이렇게 검증된 변경 사항은 이후에 참고할 수 있는 표준으로 활용될 수 있습니다.
  • 🗑 데이터베이스 정리 - 모든 레코드를 삭제

"네트워크" 탭: 브라우저 및 JSON 결과

engiAI — 텍스트: 네트워크
"네트워크" 탭: 내장된 HTTP 서버, PC의 모든 네트워크 어댑터를 통한 연결 주소 및 API 주소 목록

"네트워크를 통해 데이터를 전송" 기능을 활성화하면 engiAI가 HTTP 서버(기본 포트 8096)를 시작합니다. 네트워크에 있는 모든 컴퓨터 또는 태블릿에서 일반 브라우저를 사용하여 마킹, 비교 및 기준을 확인할 수 있습니다. 별도의 설치는 필요 없습니다. "📋 복사" 및 "🌐 브라우저에서 열기" 버튼은 목록에서 주소를 가져옵니다.

주소어떤 정보를 제공하는지
/페이지: 마킹, 비교, 기준, JSON
/api/marks마킹: 전체 또는 마지막, 날짜 또는 날짜 없이 (창에서 선택된 대로)
/api/marks?show=last&format=text마지막 마킹은 간단한 텍스트로
/api/last마지막 마킹
/api/state현재 영역의 상태 및 텍스트
/api/refs기준; `POST /api/refs — 기준(JSON 형식)을 업로드합니다.
/api/export모든 마킹 데이터베이스

처음 실행 시 Windows 방화벽은 engiAI에 대한 접근 권한을 요청할 수 있습니다. 필요한 네트워크에 대한 접근을 허용하십시오.

"입력" 탭: 컨트롤러 신호를 기반으로 한 캡처

engiAI — 텍스트: 입력
"입력" 탭: PLC 또는 센서에서 전송되는 신호를 위한 TCP 서버 - 네트워크, 포트, 신호 값, 클라이언트에 대한 응답 및 "현재 캡처" 확인.

장치가 카메라에 들어오면 (센서, PLC, 로봇 등의 신호에 의해), "입력 신호를 통해 인식" 옵션을 선택합니다. engiAI는 TCP 서버를 실행하며, 각 신호에 대해 해당 영역의 이미지를 캡처합니다. 캡처된 이미지는 텍스트 인식, 비교, 그리고 데이터베이스 저장 과정을 거치며, 이는 연속적인 모드와 동일하게 작동합니다.

  • 네트워크 – 어떤 네트워크 어댑터에서 신호를 받을지 선택 (모든 네트워크: 어떤 어댑터든 가능); IP 주소를 수동으로 입력할 수 있습니다. 포트 – 기본적으로 8097.
  • 신호 – 어떤 것을 팀으로 간주할 것인지 정의. 기본값은 1: 텍스트 ("1", "1\r\n") 또는 0x01 바이트입니다.
  • 인식된 텍스트로 고객에게 응답 – 응답에는 마킹된 문자열이 포함되며, 비교 시에는 탭으로 구분된 OK 또는 NG가 반환됩니다. 텍스트 없음 – 텍스트가 발견되지 않았고, 오류 … – 영역 또는 프레임이 존재하지 않습니다.
  • 📸 현재 캡처 (확인) – 이는 신호와 동일하지만 버튼에서 전송됩니다. TCP-UDP (클라이언트) 프로그램을 사용하여 컨트롤러 없이 확인할 수 있습니다. 주소, 포트, "1", "전송" 값을 입력합니다.

입력 및 지속적인 인식 기능이 동시에 작동: "텍스트 인식"이 선택되면 프로그램은 컨베이어를 계속 모니터링하고, 각 신호에 대해 추가적으로 캡처를 수행합니다.

5분 만에 빠른 설정

1
"텍스트를 클릭한 다음, "영역 선택"을 클릭하고 비디오의 텍스트 위로 프레임을 드래그합니다."
2
"인식" 탭에서, 미리보기 텍스트를 수직으로 정렬하고, 작은 글꼴 크기에 대해 확대 배율 2~4를 선택하고, 컨베이어의 이동 방향을 설정합니다.
3
"마킹" 탭에서 "영역 내 모든 항목을 샘플과 비교" 옵션을 선택하고, 문구와 임계값을 입력하세요.
4
"텍스트 인식 기능을 활성화합니다. 인식된 각 문장은 녹색("인식됨") 또는 빨간색("인식되지 않음")으로 표시되어 목록에 나타납니다."
5
필요한 경우 브라우저 및 JSON용 "네트워크" 및 컨트롤러 신호용 "입력"을 활성화합니다.