AI를 사용하여 .NET 10에서 자동차 목록에서 구조화된 데이터 추출

발행: (2026년 3월 10일 오후 02:23 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

위 링크에 포함된 전체 텍스트를 제공해 주시면, 해당 내용을 한국어로 번역해 드리겠습니다.
(코드 블록, URL 및 마크다운 형식은 그대로 유지됩니다.)

왜 이것이 중요한가

자동차 목록은 형태와 규모가 다양합니다. 가격 비교 사이트, 마켓플레이스 집계 서비스, 혹은 재고 관리 시스템을 구축하든 다음이 필요합니다:

  • 주요 세부 정보(제조사, 모델, 연식, 주행거리, 가격) 추출
  • 다양한 형식(판매, 리스, 임대) 처리
  • 누락된 정보를 유연하게 다루기
  • 대규모 데이터 처리

수동으로 파싱하는 것은 번거롭습니다. AI에게 무거운 작업을 맡기세요! 💪

우리가 사용할 도구

  • GitHub 모델 – 강력한 AI 모델에 대한 무료 액세스(신용카드 필요 없음)
  • Microsoft.Extensions.AI – .NET용 통합 AI 추상화
  • .NET 10 – 최신 및 최고

설정

  1. 새 콘솔 앱 만들기

    dotnet new console -n TextExtraction
    cd TextExtraction
  2. 필요한 패키지 추가

    dotnet add package Microsoft.Extensions.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets

GitHub 토큰을 안전하게 저장하기

dotnet user-secrets init
dotnet user-secrets set "GitHubModels:Token" "your-github-token"

추출 모델 정의

CarDetails.cs 파일을 생성합니다:

using System.Text.Json.Serialization;

[JsonConverter(typeof(JsonStringEnumConverter))]
public enum AvailabilityType
{
    Sale,
    Lease,
    Rent
}

public class CarDetails
{
    public string Make { get; set; } = string.Empty;
    public string Model { get; set; } = string.Empty;
    public int? Year { get; set; }
    public double? Mileage { get; set; }
    public double? Price { get; set; }
    public AvailabilityType? AvailabilityType { get; set; }
    public double? PricePerMonth { get; set; }
    public double? PricePerDay { get; set; }
    public string[]? Features { get; set; }
    public string? Location { get; set; }
    public string ShortSummary { get; set; } = string.Empty;
    public int? OwnerCount { get; set; }
}

Note: nullable 타입을 사용하면 누락된 데이터를 우아하게 처리할 수 있습니다! ✨

핵심 추출 로직 (Program.cs)

앱 실행

dotnet run

샘플 출력

Processing car listings...

✅ Extracted: Honda City
{
  "Make": "Honda",
  "Model": "City",
  "Year": 2018,
  "Mileage": 30000,
  "Price": 6.5,
  "AvailabilityType": "Sale",
  "Features": [
    "Single owner",
    "Showroom condition"
  ],
  "OwnerCount": 1
}

✅ Extracted: Hyundai Creta
{
  "Make": "Hyundai",
  "Model": "Creta SX",
  "Year": 2020,
  "AvailabilityType": "Lease",
  "PricePerMonth": 22000,
  "Features": [
    "Premium SUV",
    "Sunroof"
  ]
}

솔루션 확장

  1. 필드 추가 – 연료 종류, 변속기, 색상

    public string? FuelType { get; set; }        // Petrol / Diesel / Electric
    public string? Transmission { get; set; }   // Manual / Automatic
    public string? Color { get; set; }
  2. 실시간 데이터 처리 – API 또는 RSS 피드에서 목록 가져오기

    var listings = await FetchListingsFromApi("https://api.carmarket.com/listings");
  3. 데이터 검증

    if (carDetails.Year > DateTime.Now.Year)
    {
        Console.WriteLine("⚠️ Invalid year detected");
    }
  4. 데이터베이스에 저장

    await dbContext.CarListings.AddAsync(carDetails);
    await dbContext.SaveChangesAsync();
  5. 보다 강력한 모델로 교체

    var client = chatService.GetChatClient("gpt-4o"); // Higher accuracy, slightly slower

모범 사례

  • 온도를 낮게 유지 – 기본 설정이 가장 일관된 추출을 제공합니다.
  • 프롬프트를 명확히 – 필요한 정확한 JSON 구조를 지정합니다.
  • nullable 타입 사용 – 모든 리스트에 모든 필드가 포함되는 것은 아닙니다.
  • 배치 처리 – 많은 리스트를 효율적으로 처리합니다.
  • 토큰 사용량 모니터링response.Usage를 통해 비용을 추적합니다.

🎯 혼란스러운 자동차 광고를 깔끔하고 구조화된 데이터로 바꿀 준비가 되셨나요?

한 번 시도해보고, 스키마를 필요에 맞게 조정한 뒤 AI에게 무거운 작업을 맡겨보세요! 🚀

전 세계 적용 사례

🚀 사용‑케이스

  • 🏪 마켓플레이스 집계 – 여러 소스의 목록을 통합
  • 💰 가격 인텔리전스 – 시장 전반의 가격 추세를 추적
  • 📊 분석 대시보드 – 비정형 데이터에서 인사이트를 구축
  • 🤖 챗봇 – 자동차 추천 봇을 구동
  • 📱 모바일 앱 – 사용자가 제출한 목록을 파싱

전체 작업 예제 받기

GitHub에서 가져오기:

genai-dotnet-basic_llm_tasks/TextExtraction

리포지토리 포함 내용

  • ✅ 주석이 포함된 전체 소스 코드
  • ✅ 9개의 예시 자동차 목록
  • ✅ 구성‑설정 가이드
  • ✅ 상세 README

What You’ll Learn

  • .NET에서 GitHub Models API 사용하기
  • GetResponseAsync를 통한 강력한 타입의 AI 응답
  • AI를 이용한 스키마 기반 추출
  • 비구조화 데이터 우아하게 처리하기
  • 프로덕션 수준 텍스트 추출 구축

추출 시도하기

  • 📄 이력서 데이터 – 이름, 기술, 경력
  • 🧾 청구서 – 공급업체, 금액, 날짜
  • 📧 이메일 – 발신자, 제목, 핵심 포인트
  • 🏠 부동산 매물
  • 🍕 레스토랑 메뉴 – 요리, 가격, 재료

동일한 패턴이 모든 텍스트 추출 작업에 적용됩니다!

무엇을 만들 건가요?

아래에 댓글을 남겨 주세요! 👇

👍 마음에 드시나요?

도움이 되셨나요? ❤️를 눌러주시고 .NET + AI 콘텐츠를 더 받아보세요!

Tags: #dotnet #ai #machinelearning #csharp #github #opensource #textextraction #nlp #automation

GitHub Repo: https://github.com/your‑org/genai-dotnet-basic_llm_tasks/tree/main/TextExtraction

0 조회
Back to Blog

관련 글

더 보기 »

트라비고

Gemini와 함께 말하는 속도만큼 빠르게 여행하세요! 라이브 에이전트가 몰입형 스토리텔링 및 3D 내비게이션과 만나는 곳. 이 프로젝트는 Gemini Live Ag...에 진입하기 위해 만들어졌습니다.