iOS 11의 Vision에는 텍스트 문자를 인식할 수 있는 앱을 만드는 데 필요한 모든 것이 있으며 구현이 동시에 발생합니다. 기술적인 코딩 지식이 필요하지 않습니다. 기능 탐색은 매우 간단합니다. 또한 구현이 원활합니다.
비전 프레임워크
비전 프레임워크를 사용하면 컴퓨터 세부 정보와 관련된 모든 작업을 쉽게 구현할 수 있습니다. 이 구조는 얼굴 및 얼굴 랜드마크 감지, 바코드 인식, 이미지 등록, 일반 기능 추적 및 텍스트 감지를 수행합니다. Vision을 사용하면 분류 또는 개체 감지와 같은 작업에 사용자 지정 Core ML 모델을 사용할 수도 있습니다.
VN DetectTextRectanglesRequest
NS VN DetectTextRectanglesRequest 이미지에서 보이는 텍스트의 영역을 찾는 이미지 분석 요청입니다. 이 기능은 텍스트 문자를 원점과 크기가 있는 직사각형 경계 상자로 반환합니다.
swift 사용에 익숙하고 한동안 프로그래밍을 해본 적이 있다면 image 및 AVFoundation과 같은 다른 기능이 있을 때 Vision의 용도가 무엇인지 궁금할 것입니다. Vision이 더 정확하고 직관적입니다. 이 기능은 다양한 플랫폼에서도 사용할 수 있습니다. 그러나 Vision을 사용하려면 더 많은 처리 능력과 처리 시간이 필요할 수 있습니다.
텍스트 감지에 Vision을 사용하려면 Xcode 9와 iOS 11을 실행하는 장치가 필요합니다.
Avcapture로 카메라 만들기
먼저 다음을 사용하여 카메라를 만들어야 합니다. AV캡쳐; 이것은 실시간 또는 오프라인 캡처를 수행하기 위해 하나의 객체 AVcapturesession을 초기화하는 것입니다. 그런 다음 세션을 장치에 연결하십시오.
앱의 UI를 구축하는 데 드는 시간을 절약하려면 시작 프로젝트를 갖는 것을 고려하십시오. 처음에는 Vision 프레임워크 학습에 집중할 수 있는 시간을 제공합니다.
- 스타터 프로젝트를 엽니다. 스토리보드의 보기가 모두 준비되고 설정되어야 합니다.
- 에 ViewController.swift, 기능과 콘센트가 있는 코드 섹션을 찾으십시오.
- 콘센트 아래-이미지뷰, d에 대한 세션을 선언하다 AV캡쳐세션 – 라이브 스트림을 기반으로 작업을 수행하고자 할 때마다 사용됩니다.
- 설정 AV캡쳐세션 그리고 AV미디어타입 계속 실행할 수 있도록 카메라 촬영을 수행하기 때문에
- 출력 및 입력 장치 정의
- 입력은 카메라에 표시되는 것이고 출력은 KCVPixelFormatType_32GRA의 설정된 형식 형식의 비디오입니다.
- 마지막으로 추가 하위 계층 동영상이 포함된 이미지보기 그리고 세션을 시작합니다. 기능은 다음과 같이 알려져 있습니다. 인뷰디로드. 또한 레이어의 프레임을 설정해야 합니다.
에서 함수를 호출합니다. 보기가 나타날 것이다 방법.
경계가 아직 확정되지 않았으므로 재정의합니다. viewDidLayoutSubviews( ) 바인딩된 레이어를 업데이트하는 방법입니다.
iOS 10 출시 이후에는 Info.plist에 추가 항목이 필요하며, 이는 카메라를 사용하는 이유를 제공합니다. 프라이버시-카메라 사용 설명도 설정해야 합니다.
텍스트 감지; 비전 프레임워크 작동 방식
앱에서 Vision을 구현하는 세 단계가 있습니다.
- 핸들러 – 이것은 요청이 호출된 후 프레임워크가 무언가를 하기를 원하는 때입니다.
- 관찰 – 이것은 하나의 요청으로 시작하여 사용자가 제공한 데이터로 수행하려는 작업입니다.
- 요청 – Detect 프레임워크를 요청할 때입니다.
이상적으로는 다음과 같이 하나의 텍스트 요청을 생성합니다. VNdetect텍스트사각형요청. 이것은 일종의 VN요청 텍스트를 둘러싸고 있는 것입니다. 프레임워크가 애플리케이션을 완료한 후 계속해서 Dettexthandler 기능. 또한 인식된 정확한 프레임을 알고 싶을 것입니다. 보고서 문자 상자= 사실이다.
그 후 다음의 모든 결과를 포함하는 관측치를 정의합니다. VNdetect텍스트사각형요청, 출력 카메라에 Vision을 추가하는 것을 잊지 마십시오. Vision은 높은 수준의 API를 노출하므로 작업이 안전합니다.
이 기능은 다음을 확인합니다. cmsamplebuffer 존재하고 PutOut Avcapture출력. 그런 다음 하나의 변수를 생성해야 합니다. 요청 옵션 1 사전 유형으로 VN이미지옵션. NS VNmage 옵션은 카메라의 속성과 데이터를 포함하는 구조 유형입니다. 그런 다음 생성해야 합니다. VNimage 요청 처리기 그리고 텍스트 요청을 실행합니다.
감지된 텍스트 주위에 테두리 그리기
프레임워크에서 두 개의 상자를 그리는 것으로 시작할 수 있습니다. 하나는 감지하는 모든 문자에 대한 것이고 다른 하나는 모든 단어에 대한 것입니다. 테이블은 요청에 따라 찾을 수 있는 모든 문자 상자의 조합입니다.
- 상자를 배치하는 데 도움이 되도록 뷰에서 점을 정의합니다.
- 그 후, 생성 칼레이NS; 사용하다 VNrectangle관찰 제약 조건을 정의하여 상자의 윤곽을 그리는 프로세스를 더 쉽게 만듭니다.
이제 모든 기능이 배치되었습니다.
점을 연결하려면 먼저 코드를 비동기식으로 실행하세요. 그런 다음 귀하의 결과에 지역이 있는지 확인해야 합니다. VNText관찰.
이제 영역 내에 상자를 그리는 함수를 호출할 수 있습니다. 지역 내 문자 상자가 있는지 확인한 다음 각 문자 주위에 상자를 가져오는 서비스에 전화하십시오.
그 후, 변수를 생성 요청 옵션. 이제 만들 수 있습니다. VNImageRequestHandler 객체를 만들고 생성한 텍스트 요청을 수행합니다.
마지막으로, 마지막 단계는 라이브 스트림으로 비전 코드를 실행하는 것입니다. 비디오 출력을 가져와서 변환해야 합니다. cm샘플 버퍼.
추가 팁
- 항상 이미지를 자르고 필요한 부분만 처리하십시오. 이렇게 하면 처리 시간과 메모리 공간이 줄어듭니다.
- 숫자가 아닌 문자를 다룰 때는 언어 수정을 켜고 숫자를 다룰 때는 끄십시오.
- 인식된 숫자 문자열에 대한 유효성 검사를 포함하여 정확성을 확인하고 사용자에게 잘못된 값을 표시하지 않도록 합니다.
- 문서 카메라 컨트롤러는 이미지 품질이 텍스트 인식에서 중요한 역할을 하기 때문에 텍스트 인식을 위한 최고의 동반자입니다.
- 성능을 높이려면 최소 텍스트 높이를 설정하는 것이 좋습니다.
Vision을 사용하면 텍스트 인식에 필요한 모든 것이 있습니다. Vision은 사용하기 쉽고 구현 시간이 짧기 때문에 사용하는 것은 거의 레고를 가지고 노는 것과 같습니다. 다양한 개체, 글꼴, 조명 및 크기에서 앱을 테스트해 보세요. Vision과 Core ML을 결합하여 자신에게 깊은 인상을 줄 수도 있습니다.