푸터 콘텐츠로 바로가기
IRONOCR 사용

C#에서 자막을 OCR로 인식하는 방법 (튜토리얼)

이 튜토리얼에서는 비디오 파일에서 하드코딩된 자막을 추출하는 방법을 배웁니다. 샘플 비디오 파일을 가져와 하드코딩된 자막을 텍스트 파일로 추출합니다. 이 과정에서 하드코드된 자막을 OCR 프로세스를 통해 추출하는 C# .NET 프로그램을 개발할 것입니다. 이 튜토리얼은 C# 초급 프로그래머도 이해할 수 있을 만큼 간단하고 쉽게 유지할 것입니다.

비디오를 처리하고 자막 파일을 추출할 수 있는 효율적인 광학 문자 인식(OCR) 엔진이 필요합니다.

OCR 결과를 제공하는 많은 라이브러리가 있습니다. 그 중 일부는 유료이고, 일부는 사용하기 어렵고, 일부는 효율적이거나 정확하지 않아서 무료이면서 효율적이고 사용하기 쉬우며 정확한 결과를 제공하는 라이브러리를 찾기가 매우 어렵습니다.

IronOCR은 개발을 위해 무료이며 상업적 목적으로 한 달간 무료 체험판을 제공합니다. 150개 이상의 언어를 지원하며, 대부분의 다른 OCR 라이브러리보다 높은 정확도를 제공합니다. 또한 효율적이고 사용하기 쉽습니다. 이 라이브러리를 우리의 데모용으로 사용할 것입니다.

IronOCR

IronOCR은 Iron Software에서 개발 및 유지 보수하는 라이브러리로, C# 소프트웨어 엔지니어에게 .NET 프로젝트에서 OCR, 바코드 스캔 및 텍스트 추출을 수행하는 데 도움을 줍니다.

IronOCR의 기능은 다음과 같습니다:

  • 이미지(JPEG, PNG, BMP), GIF, TIF/TIFF, 스트림 및 PDF 등 다양한 형식의 텍스트 읽기
  • 저품질 스캔 및 사진의 많은 필터를 사용한 교정, 예를 들면 Deskew, Denoise, Binarize, Enhance Resolution, Dilate 등
  • 다양한 형식(20개 이상)의 바코드 읽기 및 QR 코드 지원
  • 최신 Tesseract OCR 빌드를 활용하여 다른 유사한 라이브러리보다 성능을 높임
  • 검색 가능한 PDF 내보내기, hOCR / HTML 내보내기 및 이미지 콘텐츠 텍스트.

번호판 번호를 읽기 위한 데모 애플리케이션을 개발해 봅시다.

Visual Studio 프로젝트 생성

첫 번째 단계는 새 프로젝트를 생성하는 것입니다.

Visual Studio를 엽니다. 새 프로젝트 생성을 클릭하고, 콘솔 애플리케이션 프로젝트 템플릿을 선택합니다.

다음 버튼을 클릭하고, 프로젝트 이름을 지정합니다 (저는 "OCR Subtitles"라고 명명했습니다. 원하는 이름을 지정할 수 있습니다).

다음 버튼을 클릭하고, 목표 프레임워크를 선택합니다. 마지막으로 생성 버튼을 클릭하여 프로젝트를 생성합니다.

프로젝트는 아래와 같이 생성됩니다.

C#에서 자막을 OCR하는 방법 (튜토리얼), 그림 1: Visual Studio에서 새 프로젝트 생성 Visual Studio에서 새로운 프로젝트 생성하기

이제 프로젝트에서 IronOCR 라이브러리를 사용하기 위해 설치해야 합니다. 가장 쉬운 방법은 NuGet 패키지 관리자를 통해 설치하는 것입니다.

IronOCR NuGet Install-Package

상단 메뉴 바에서 도구를 클릭하고, NuGet 패키지 관리자 > 솔루션용 NuGet 패키지 관리를 선택합니다. 아래 그림과 같이.

C#에서 자막을 OCR하는 방법 (튜토리얼), 그림 2: Visual Studio에서 IronOCR 설치 Visual Studio에서 IronOCR 설치

다음 창이 나타납니다.

C#에서 자막을 OCR하는 방법 (튜토리얼), 그림 3: Visual Studio NuGet Package Manager UI Visual Studio NuGet 패키지 관리자 UI

검색을 클릭하고, IronOCR을 검색합니다. IronOCR 패키지를 선택하고, 아래 그림과 같이 설치 버튼을 클릭합니다.

C#에서 자막을 OCR하는 방법 (튜토리얼), 그림 4: NuGet Package Manager UI에서 IronOCR 검색 NuGet 패키지 관리자 UI에서 IronOCR 검색

IronOCR 라이브러리가 설치되고 사용할 준비가 됩니다.

하드코딩된 자막 추출하기

하드코딩된 자막을 추출하는 프로그램을 작성해 봅시다.

우리는 자막을 추출하기 위해 다음 스크린샷을 사용할 것입니다.

C#에서 자막을 OCR하는 방법 (튜토리얼), 그림 5: 텍스트를 추출할 샘플 비디오 화면 캡처 텍스트가 추출될 샘플 비디오 스크린샷

다음 네임스페이스를 추가하십시오:

using IronOcr;
using IronOcr;
$vbLabelText   $csharpLabel

네임스페이스 선언 아래에 다음 코드를 작성하세요.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input using the specified image path
using (var input = new OcrInput(@"D:\License Plate\plate3.jpg"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input using the specified image path
using (var input = new OcrInput(@"D:\License Plate\plate3.jpg"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

위의 코드는 다음과 같이 작동합니다:

  1. IronTesseract 객체를 초기화합니다. 기본 인스턴스를 IronTesseract로 생성합니다.
  2. 입력 이미지 파일 또는 PDF 문서로 채워진 새 OcrInput 객체를 생성합니다. OcrInput는 여러 페이지의 문서에 대한 OCR을 허용하고, OCR 전에 이미지를 향상시켜 더 빠르고 정확한 결과를 얻을 수 있기 때문에 선호되는 입력 유형입니다.
  3. OCR 입력 객체에서 텍스트를 읽고 OCR 결과 객체를 반환합니다. ocr.Read는 제공된 입력 스크린샷에서 자막을 추출합니다.
  4. result.Text는 제공된 입력에서 추출된 전체 콘텐츠를 반환합니다.

샘플 프로그램은 아래의 콘솔 출력을 생성합니다:

C#에서 자막을 OCR하는 방법 (튜토리얼), 그림 7: IronOCR를 사용하여 샘플 이미지에서 텍스트 추출을 수행하여 생성된 콘솔 출력 IronOCR를 사용하여 샘플 이미지에서 텍스트를 추출하여 생성된 콘솔 출력

비디오 제목과 자막을 모두 포함하고 있는 비디오 프레임이 있다고 가정해 봅시다:

C#에서 자막을 OCR하는 방법 (튜토리얼), 그림 6: 비디오 제목과 비디오 자막의 텍스트 영역을 포함하는 긴 비디오의 단일 프레임 비디오 제목과 비디오 자막의 텍스트 영역을 포함한 긴 비디오의 단일 프레임

우리의 목표는 이미지의 하단 영역에서 하드코딩된 자막을 추출하는 것입니다. 이 경우 자막이 표시되는 텍스트 영역을 지정해야 합니다.

프레임에서 자막 위치 지정하기

우리는 비디오 프레임에서 자막을 읽을 영역을 지정하기 위해 System.Drawing.Rectangle를 사용할 수 있습니다. 측정 단위는 항상 픽셀입니다.

텍스트 영역을 지정하기 위해 다음 샘플 코드를 사용할 것입니다.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input and specify the region of interest
using (var input = new OcrInput())
{
    // Define the area within the image where subtitles are located for a 41% improvement on speed
    var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
    // Add the specific region of the image to the OCR input
    input.AddImage(@"D:\subtitle\image.png", contentArea);
    // Perform OCR on the specified region
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input and specify the region of interest
using (var input = new OcrInput())
{
    // Define the area within the image where subtitles are located for a 41% improvement on speed
    var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
    // Add the specific region of the image to the OCR input
    input.AddImage(@"D:\subtitle\image.png", contentArea);
    // Perform OCR on the specified region
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

이로 인해 41%의 속도 증가가 발생하며, 구체적으로 지정할 수 있습니다. contentArea에서 x와 y의 시작점을 지정했으며, 그 후 필요한 자막 영역의 높이와 너비를 지정했습니다.

자막을 자막 텍스트 파일로 저장하기

추출된 자막을 텍스트 파일로 저장합시다.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input with the specified image path
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Save the extracted text to a specified file path
    result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input with the specified image path
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Save the extracted text to a specified file path
    result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
$vbLabelText   $csharpLabel

result.SaveAsTextFile는 출력 경로를 인수로 받아 지정된 경로에 파일을 저장합니다.

C#에서 자막을 OCR하는 방법 (튜토리얼), 그림 8: 비디오 제목과 비디오 자막의 텍스트 영역을 포함하는 긴 비디오의 단일 프레임 비디오 제목과 비디오 자막의 텍스트 영역을 포함한 긴 비디오의 단일 프레임

요약

이 튜토리얼에서 우리는 IronOCR을 사용하고 비디오 스크린샷에서 자막을 읽는 매우 간단한 프로그램을 개발하는 방법을 배웠습니다. 우리가 추출하고자 하는 텍스트를 위해 영역을 지정할 수도 있습니다.

IronOCR은 컴퓨터 비전을 위한 OpenCV 기능을 제공합니다. IronOCR은 흐리거나 저해상도의 이미지에서도 텍스트를 읽을 수 있게 해줍니다. 이 라이브러리는 효율적이며 정확도를 제공합니다. 125개 이상의 언어를 완벽하게 지원합니다. 개발용으로 무료이며 생산에 제한이 없습니다.

요약하자면 IronOCR은 다음의 기능을 제공합니다:

  • 이미지 및 스캔한 문서를 스캔하고 읽는 기능
  • 150개 이상의 글로벌 언어 지원
  • 텍스트, 구조화된 데이터 또는 검색 가능한 PDF로 출력
  • .NET 6, 5, Core, Standard, Framework 지원

IronOCR은 Iron Software의 라이브러리 모음의 일부로, PDF 읽기 및 쓰기, Excel 파일 조작, 이미지에서 텍스트 읽기, 그리고 웹사이트에서 내용 스크래핑에 유용합니다. 개별 라이브러리 두 개의 가격으로 Iron Suite 전체를 구매하십시오.

자주 묻는 질문

C#에서 비디오 파일에 하드코딩된 자막을 추출하는 방법은 무엇인가요?

IronOCR 사용하면 C#에서 비디오 파일에 하드코딩된 자막을 추출할 수 있습니다. NuGet 패키지 관리자를 통해 라이브러리를 설치한 다음, 이를 사용하여 비디오 프레임을 처리하고 텍스트를 추출하세요.

자막 추출에 IronOCR 사용하는 것이 Tesseract를 사용하는 것보다 어떤 장점이 있나요?

IronOCR 향상된 정확도, 사용 편의성, 150개 이상의 언어 지원을 제공하는 Tesseract의 업그레이드된 대안으로, 비디오에서 자막을 추출하는 데 매우 적합합니다.

IronOCR 에서 자막 위치를 지정하여 처리 속도를 향상시키는 방법은 무엇입니까?

IronOCR 에서는 System.Drawing.Rectangle 을 사용하여 관심 영역에 초점을 맞추도록 자막 위치를 지정할 수 있으며, 이를 통해 처리 속도를 최대 41%까지 향상시킬 수 있습니다.

IronOCR 사용하여 영어 이외의 언어에서 자막을 추출할 수 있습니까?

네, IronOCR 150개 이상의 언어를 지원하므로 여러 언어로 된 비디오에서 자막을 정확하게 추출할 수 있습니다.

C# 자막 OCR 튜토리얼을 수강하기 위한 사전 요구 사항은 무엇입니까?

이 튜토리얼을 진행하려면 C# 프로그래밍에 대한 기본적인 지식과 Visual Studio를 사용하여 NuGet 패키지 관리자를 통해 IronOCR 라이브러리를 설치할 수 있는 능력이 필요합니다.

IronOCR 저화질 비디오 프레임을 어떻게 처리하나요?

IronOCR 저품질 스캔을 보정하는 기능이 포함되어 있어 최적화되지 않은 비디오 프레임에서 텍스트를 추출하는 정확도를 향상시킵니다.

IronOCR 로 자막을 추출한 후 사용할 수 있는 출력 형식은 무엇인가요?

IronOCR 사용하면 추출된 자막을 텍스트 파일, 구조화된 데이터 또는 검색 가능한 PDF로 저장할 수 있습니다.

상업 프로젝트에서 IronOCR 사용하는 데 비용이 발생하나요?

IronOCR 개발 목적으로는 무료로 사용할 수 있으며, 상업 프로젝트를 위한 1개월 무료 평가판을 제공합니다. 지속적인 상업적 사용을 위해서는 라이선스가 필요합니다.

IronOCR 추가 기능을 위해 다른 라이브러리와 통합할 수 있습니까?

네, IronOCR PDF 조작 및 웹 스크래핑과 같은 작업을 위해 다른 Iron Software 라이브러리와 통합하여 기능을 향상시킬 수 있습니다.

칸나오팟 우돈판트
소프트웨어 엔지니어
카나팟은 소프트웨어 엔지니어가 되기 전 일본 홋카이도 대학교에서 환경 자원학 박사 학위를 취득했습니다. 학위 과정 중에는 생물생산공학과 소속 차량 로봇 연구실에서 활동하기도 했습니다. 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