푸터 콘텐츠로 바로가기
IRONOCR 사용
C#에서 차량 번호판에 대한 OCR을 수행하는 방법

C#을 사용하여 차량 번호판을 OCR로 인식하는 방법 (튜토리얼)

번호판 인식은 교통 관리, 주차 시스템, 법 집행, 요금징수 솔루션 등 여러 산업에서 필수적인 도구가 되었습니다. 광학 문자 인식 (OCR) 기술을 활용하여 개발자들은 이미지에서 텍스트를 효율적으로 추출하여 번호판 식별 프로세스를 자동화할 수 있습니다. 이 튜토리얼에서는 C# OCR 라이브러리인 IronOCR를 사용하여 이미지에서 번호판을 정확히 읽는 방법을 보여드리겠습니다. 컴퓨터 비전 작업을 위한 OpenCV 소스 코드와의 원활한 통합으로 IronOCR는 복잡하거나 소음이 있는 이미지 소스에서도 텍스트를 인식할 수 있는 강력한 솔루션을 제공합니다. 깔끔한 번호판 이미지나 전체 차량 사진을 다루든 간에, 이 가이드는 현대 OCR 기술을 사용하여 신뢰할 수 있는 번호판 인식 시스템을 구축하는 단계를 안내합니다.

번호판 인식 C# 사용 방법

  1. 도서관 설치
  2. 번호판 이미지를 새로운 OcrImageInput 인스턴스로 가져오기.
  3. C#에서 텍스트 추출을 개선하기 위한 이미지 필터를 적용합니다.
  4. 사진에서 번호판 영역을 지정하여 인식 속도를 향상시킵니다.
  5. 새로운 OcrLicensePlateResult 인스턴스를 사용하여 추출된 텍스트를 출력하십시오.

IronOCR 시작하기

IronOCR는 Tesseract OCR 엔진에 기반한 C# OCR 라이브러리로, .NET 응용 프로그램에서 텍스트 인식 프로젝트에 높은 정확도와 효율성을 제공합니다. 소음이 많거나 품질이 낮은 이미지를 처리하는데 이상적인 IronOCR는 자동 소음 감소 및 그레이스케일 변환과 같은 강력한 이미지 전처리 기능을 포함하여 텍스트 추출의 명확성을 향상시킵니다.

IronOCR의 눈에 띄는 기능은 다음과 같습니다:

  • 높은 OCR 정확도: 다양한 언어 및 글꼴에 최적화되어 복잡하거나 왜곡된 텍스트를 작업할 때도 높은 정확성을 자랑합니다.
  • 이미지 및 PDF 지원: 여러 이미지 형식과 PDF 파일에서 텍스트를 읽을 수 있어 다양한 문서 유형에 대해 다재다능합니다.
  • OpenCV와의 통합: OpenCV 지원을 통해 IronOCR는 특정 텍스트 영역을 감지하는 컴퓨터 비전 작업을 수행할 수 있으며, 이는 특히 번호판 인식에 유용합니다.
  • 고급 전처리: 그레이스케일 변환, 회전, 비틀기 수정 및 대비 강화 필터를 포함하여 인식 품질을 개선합니다.
  • 유연한 입력 옵션: 다중 페이지 문서 및 조정 가능한 영역을 지원하여 개발자가 특정 영역에 OCR 처리를 집중할 수 있어 더 빠르고 목표 지향적인 결과를 제공합니다.

이런 기능을 통해 IronOCR는 정확성, 유연성, 다른 컴퓨터 비전 도구와의 통합 용이성을 요구하는 OCR 응용 프로그램을 구축하는 데 강력한 솔루션입니다.

Visual Studio 프로젝트 만들기

Visual Studio를 열고 "새 프로젝트 만들기"를 선택하여 시작합니다. 여기서는 (우리의 경우 콘솔 응용 프로그램을 만들 예정입니다) 만들고자 하는 프로젝트 유형을 선택할 수 있는 페이지로 안내됩니다. 원하는 응용 프로그램 유형을 선택하고 "다음"을 클릭합니다.

Visual Studio 프로젝트 유형

이제 프로젝트에 이름을 지정하고 저장 장소를 선택하세요.

프로젝트 이름 및 위치

마지막으로, 대상 .NET Framework를 선택하고 "생성" 버튼을 클릭하세요. 아래와 같이 프로젝트가 생성됩니다.

생성된 프로젝트

다음 단계는 IronOCR 라이브러리를 설치하여 차량 번호판 처리 작업을 시작하는 것입니다.

IronOCR 설치 중

C# 프로젝트에서 IronOCR를 시작하려면 NuGet에서 IronOCR 패키지를 설치해야 합니다. IronOCR는 .NET Framework 및 .NET Core와 호환되며 다양한 .NET 애플리케이션에 쉽게 통합할 수 있습니다.

1단계: 패키지 관리자 콘솔 열기

Visual Studio에서 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔로 이동하세요.

2단계: IronOCR Install-Package

패키지 관리자 콘솔에 다음 명령을 입력하세요:

Install-Package IronOcr

이 명령은 프로젝트에서 OCR 기능을 실행하는 데 필요한 모든 종속성을 포함하여 IronOCR 라이브러리를 설치합니다. 애플리케이션이 컴퓨터 비전을 이용한 차량 번호판 감지와 같은 고급 기능을 필요로 할 경우, 선택적으로 IronOcr.ComputerVision.Windows 패키지를 다음과 같이 설치할 수 있습니다:

Install-Package IronOcr.ComputerVision.Windows

IronOcr.Extensions.AdvancedScan 확장 프로그램을 설치하여 강력한 ReadLicensePlate 메서드를 활용할 수 있도록 하세요:

Install-Package IronOcr.Extensions.AdvancedScan

도구 > NuGet 패키지 관리자 > 해결책용 NuGet 패키지 관리를 사용하여 패키지를 설치할 수도 있으며, 필요한 패키지를 검색하세요:

NuGet 패키지 관리자

코드 설정

마지막으로, 코드 상단에 필요한 import와 using 문을 추가해야 합니다:

using IronOcr;
using IronOcr;
$vbLabelText   $csharpLabel

광학 문자 인식을 통한 차량 번호판 읽기

이 섹션에서는 IronOCR와 같은 Tesseract OCR 엔진을 사용하여 이미지에서 텍스트를 추출하는 프로그램을 만들 것입니다. 차량 탐지를 구현하려면 추가적인 머신러닝 라이브러리를 통합할 수도 있습니다. 특히, IronOCR는 오픈 소스 컴퓨터 비전 라이브러리 OpenCV와 통합되어 차량 및 번호판을 식별하는 객체 탐지 작업을 수행할 수 있습니다.

예시 번호판 이미지

다음 번호판을 가지고 작업할 것입니다:

번호판 예시

번호판에 OCR을 수행하는 예제 코드

using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrImageInput("licensePlate.jpeg"))
{
    // Fixes digital noise and makes the image easier to read
    input.DeNoise();
    input.ToGrayScale();

    // Reads the license plate information and stores it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

    // Saves the license plate text to a string variable
    string output = result.Text;

    // Outputs the license plate text to the console
    Console.WriteLine(output);
}
using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrImageInput("licensePlate.jpeg"))
{
    // Fixes digital noise and makes the image easier to read
    input.DeNoise();
    input.ToGrayScale();

    // Reads the license plate information and stores it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

    // Saves the license plate text to a string variable
    string output = result.Text;

    // Outputs the license plate text to the console
    Console.WriteLine(output);
}
$vbLabelText   $csharpLabel

OCR 출력

코드 분석:

  • 초기화: var ocr = new IronTesseract();는 OCR(광학 문자 인식) 방법을 제공하는 IronTesseract 클래스의 새 인스턴스를 생성합니다.

  • 이미지 입력: using 문장은 지정된 이미지 파일 "licensePlate.jpeg"로 새로운 OcrImageInput 객체를 생성합니다. 이 객체는 OCR 처리를 위한 이미지 데이터를 보유하도록 설계되었습니다.

  • 이미지 전처리:

    • input.DeNoise();은 이미지를 향상시키기 위해 디지털 노이즈 감소 필터를 적용하여 OCR 엔진이 텍스트를 읽기 쉽게 만듭니다.
    • input.ToGrayScale();은 인식을 더 정확하고 빠르게 하기 위해 이미지를 그레이스케일로 변환합니다.
  • 번호판 인식: OcrLicensePlateResult result = ocr.ReadLicensePlate(input); 줄은 ReadLicensePlate 방법을 사용하여 처리된 이미지를 분석하고 감지된 번호판 정보를 추출하며, 결과를 OcrLicensePlateResult 객체에 저장합니다.

  • 출력 저장: 번호판 텍스트는 result.Text에 액세스하여 인식된 번호판 텍스트를 포함하는 string 변수 output에 저장됩니다.

  • 콘솔 출력: 마지막으로, Console.WriteLine(output);는 콘솔에 추출된 번호판 텍스트를 출력하여 확인합니다.

차량에서 번호판 숫자 스캔하기

번호판만이 아닌 전체 차량의 이미지가 있는 경우, 번호판 영역에 집중할 수 있도록 사각형 영역을 지정할 수 있습니다. System.Drawing.Rectangle을 사용하여 이 영역을 픽셀 단위로 정의할 수 있습니다.

원본 이미지

예제에서는 다음 이미지 파일을 사용할 것입니다:

번호판이 있는 자동차

관심 영역을 지정함으로써 처리 속도를 향상시키고 불필요한 텍스트 추출을 피할 수 있습니다.

구현 코드

using IronOcr;
using System.Drawing;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
    input.LoadImage("CarPlate.jpeg", contentArea);
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
using IronOcr;
using System.Drawing;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
    input.LoadImage("CarPlate.jpeg", contentArea);
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

집중된 OCR 출력

코드 분석:

  • 초기화: var ocr = new IronTesseract();는 OCR 작업을 실행하는 데 책임이 있는 IronTesseract 클래스의 새 인스턴스를 생성합니다.
  • OCR 입력: using (var input = new OcrInput()) 문장은 OCR을 위한 이미지를 로드하고 처리하는 데 사용될 새로운 OcrInput 객체를 생성합니다.
  • 관심 영역 정의: var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);는 이미지 내에서 사각형 영역(contentArea)을 정의합니다. 이 사각형은 번호판이 위치할 것으로 예상되는 좌표와 크기(너비 및 높이)를 지정합니다.
  • 이미지 로드: input.LoadImage("CarPlate.jpeg", contentArea);는 지정된 이미지 파일("CarPlate.jpeg")을 로드하고 그 정의된 사각형(contentArea)에 초점을 맞춰 OCR 처리가 해당 특정 영역으로 제한되도록 합니다.
  • 번호판 읽기: OcrLicensePlateResult result = ocr.ReadLicensePlate(input);는 입력 이미지를 번호판 문자로 분석하고 추출된 텍스트를 포함하는 OcrLicensePlateResult 객체를 반환하는 ReadLicensePlate 방법을 호출합니다.
  • 출력: Console.WriteLine(result.Text);는 콘솔에 번호판에서 인식된 텍스트를 출력합니다.

자동 번호판 인식

IronOCR은 OpenCV를 활용하여 다양한 이미지 처리 기술을 사용하여 이미지 내 텍스트 영역을 식별합니다. 이 기능은 프로그램이 이미지의 텍스트 영역을 찾아서 Tesseract를 활용하여 해당 영역을 읽음으로써 번호판을 감지할 수 있게 합니다.

설치

번호판 감지 모델을 활성화하려면 패키지 관리자 콘솔을 통해 필요한 패키지를 설치하십시오:

번호판에 대한 자동 영역 감지를 사용하는 예:

var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

자동 OCR 출력

코드 분석:

  • 초기화: Tesseract 엔진을 사용한 광학 문자 인식(OCR)에 사용될 IronTesseract 클래스의 인스턴스가 생성됩니다.
  • 이미지 입력: 지정된 이미지 파일("CarPlate.jpeg")로 새 OcrImageInput 객체가 인스턴스화됩니다. 이 객체는 OCR 과정의 입력으로 사용되며 적절한 리소스 관리를 보장하기 위해 using 문장에 포함됩니다.
  • 텍스트 영역 감지: FindTextRegion() 방법이 input 객체에 호출됩니다. 이 메서드는 컴퓨터 비전 기술을 사용하여 이미지 내에서 텍스트가 포함될 가능성이 있는 영역을 자동으로 식별하며, 특히 번호판을 대상으로 합니다.
  • 번호판 인식: ReadLicensePlate 방법이 감지된 텍스트 영역을 분석하여 번호판 번호를 추출하기 위해 호출됩니다. 결과는 인식된 텍스트와 관련 메타데이터를 보유한 OcrLicensePlateResult 객체에 저장됩니다.
  • 출력: 감지된 번호판 텍스트가 콘솔에 출력되어 사용자가 추출된 번호판 번호를 볼 수 있게 합니다.

IronOCR 라이선스

IronOCR 라이선스

IronOCR를 직접 사용해 보고 싶은 분들을 위해 IronOCR은 전체 도구 범위에 액세스 할 수 있는 무료 체험을 제공합니다. 즉, 라이선스를 구매하기 전에 직접 프로젝트에서 테스트할 수 있습니다. 무료 체험이 종료되면 IronOCR 라이선스는 lite 라이선스의 경우 $liteLicense부터 시작합니다. 또한, 로열티 없는 재배포 보장, 중단 없는 지원 및 지속적인 제품 업데이트와 같은 추가 비용이 드는 선택적 추가 기능도 제공합니다.

그 외에도, PDF 관련 작업을 위한 IronPDF나 워드 문서 작업을 위한 IronWord와 같은 Iron Software 제품을 더 많이 사용해야 하는 경우 Iron Software는 전체 도구 범위에 액세스할 수 있는 Iron Suite도 제공합니다. 이는 훌륭한 가격에 제공합니다.

결론

이 가이드에서는 IronOCR를 사용하여 C#에서 신뢰할 수 있는 번호판 인식 시스템을 구축하는 방법을 탐색했습니다. 강력한 텍스트 추출 기능과 OpenCV 통합으로 IronOCR은 차량 이미지에서 정확한 텍스트 인식을 필요로 하는 응용 프로그램에 효율적이고 사용하기 쉬운 솔루션을 제공합니다. 이미지 전처리부터 특정 감지 영역 설정까지 IronOCR은 혼잡하거나 복잡한 이미지(예: 교통 및 감시 영상의 번호판)에 맞춘 도구로 OCR 프로세스를 단순화합니다.

교통 감시, 주차 단속 또는 자동 번호판 인식이 필요한 응용 프로그램을 개발하든 관계없이 IronOCR은 .NET 환경에 원활하게 통합되는 종합 라이브러리를 제공합니다. 이 단계를 따르면 다양한 현실 세계 시나리오에서 효율성과 정확성을 향상시키는 OCR 기반 솔루션을 배포할 수 있습니다. 영역 선택 및 잡음 감소와 같은 추가 기능으로 IronOCR은 최고의 결과를 내기 위해 번호판 인식 작업을 최적화합니다.

자주 묻는 질문

C#에서 OCR을 사용하여 차량 번호판을 식별하려면 어떻게 해야 하나요?

IronOCR 사용하여 C#에서 차량 번호판을 식별하려면 IronTesseract 클래스를 활용하여 OCR 인스턴스를 생성하고, 번호판이 포함된 이미지를 로드하고, 노이즈 감소와 같은 전처리 필터를 적용한 다음, ReadLicensePlate 메서드를 사용하여 텍스트를 추출하면 됩니다.

OCR을 차량 번호판 인식에 사용하면 어떤 이점이 있나요?

OCR을 이용한 차량 번호판 인식은 텍스트 추출 과정을 자동화하여 높은 정확도와 효율성을 제공합니다. IronOCR 다양한 이미지 형식 지원과 컴퓨터 비전 통합을 통해 이러한 장점을 더욱 강화하여 교통 관리 및 법 집행과 같은 분야에 이상적인 솔루션을 제공합니다.

OCR 처리 과정에서 노이즈가 많거나 품질이 낮은 이미지를 어떻게 처리할 수 있을까요?

IronOCR 자동 노이즈 감소 및 회색조 변환과 같은 강력한 이미지 전처리 기능을 제공하여 노이즈가 많거나 품질이 낮은 이미지에서도 텍스트 추출 정확도를 향상시킵니다.

이미지의 특정 영역에만 OCR 처리를 집중하는 것이 가능할까요?

네, IronOCR 사용하면 이미지 내에서 직사각형 형태의 관심 영역을 지정하여 OCR 처리 범위를 좁힐 수 있으므로 차량 번호판과 같은 영역에서 텍스트를 추출하는 속도와 정확도를 모두 향상시킬 수 있습니다.

Visual Studio 프로젝트에서 OCR을 시작하려면 어떻게 해야 하나요?

Visual Studio 프로젝트에서 OCR을 사용하려면 새 콘솔 애플리케이션을 만들고 NuGet 통해 IronOCR 패키지를 설치한 다음 IronOCR 클래스와 메서드를 사용하여 OCR 로직을 구현하세요. 이렇게 설정하면 애플리케이션 내에서 OCR 작업을 손쉽게 수행할 수 있습니다.

IronOCR 차량 번호판 인식을 위해 어떤 기능을 제공하나요?

IronOCR 높은 OCR 정확도, 향상된 컴퓨터 비전 작업을 위한 OpenCV 통합, 고급 전처리 필터, 다양한 이미지 및 PDF 형식 지원을 제공하여 차량 번호판 인식에 다재다능한 도구입니다.

IronOCR 컴퓨터 비전 작업과 어떻게 통합됩니까?

IronOCR OpenCV와 통합하여 자동 텍스트 영역 감지와 같은 다양한 컴퓨터 비전 작업을 수행함으로써 차량 번호판 인식과 같은 응용 분야의 OCR 처리 성능을 향상시킵니다.

IronOCR에 사용할 수 있는 라이선스 옵션은 무엇인가요?

IronOCR 무료 평가판과 다양한 라이선스 옵션을 제공하며, 가장 기본적인 라이트 라이선스부터 시작합니다. 다양한 애플리케이션에서 확장된 기능을 원하는 사용자를 위해 추가 기능 및 Iron Suite 도 제공됩니다.

OCR 기술을 차량 전체 이미지에 적용할 수 있을까요?

네, IronOCR 차량 전체 이미지에도 사용할 수 있습니다. 번호판 영역을 지정하면 원하는 영역에 OCR 처리를 집중할 수 있어 불필요한 텍스트 추출을 방지하고 처리 효율을 높일 수 있습니다.

칸나오팟 우돈판트
소프트웨어 엔지니어
카나팟은 소프트웨어 엔지니어가 되기 전 일본 홋카이도 대학교에서 환경 자원학 박사 학위를 취득했습니다. 학위 과정 중에는 생물생산공학과 소속 차량 로봇 연구실에서 활동하기도 했습니다. 2022년에는 C# 기술을 활용하여 Iron Software의 엔지니어링 팀에 합류했고, 현재 IronPDF 개발에 집중하고 있습니다. 카나팟은 IronPDF에 사용되는 대부분의 코드를 직접 작성하는 개발자로부터 배울 수 있다는 점에 만족하며, 동료들과의 소통을 통해 배우는 것 외에도 Iron Software에서 일하는 즐거움을 누리고 있습니다. 코딩이나 문서 작업을 하지 않을 때는 주로 PS5로 게임을 하거나 The Last of Us를 다시 시청하는 것을 즐깁니다.

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me