텍스트 추출

텍스트 추출

텍스트 추출

Aspose.PDF FOSS for .NET은 PDF 페이지에서 텍스트를 추출하기 위한 여러 메커니즘을 제공합니다. TextFragmentAbsorber은 기본 도구이며 — 페이지 내용을 스캔하고 위치, 글꼴 및 스타일 정보를 포함한 구조화된 TextFragment 객체를 반환합니다.


기본 텍스트 추출

TextAbsorber은 페이지 또는 문서에서 모든 텍스트를 단일 문자열로 추출합니다.

using var doc = Document.Open(pdfBytes);

var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);

string pageText = absorber.Text;

텍스트 조각 추출

TextFragmentAbsorber은 구조화된 결과를 제공합니다. 각 TextFragment은 추출된 텍스트, 페이지상의 위치 및 글꼴 세부 정보를 포함합니다.

using var doc = Document.Open(pdfBytes);

var absorber = new TextFragmentAbsorber();
doc.Pages[1].Accept(absorber);

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Text: {fragment.Text}");
    Console.WriteLine($"Position: ({fragment.Position.XIndent}, {fragment.Position.YIndent})");
    Console.WriteLine($"Font: {fragment.TextState.Font.FontName}");
}

정규 표현식으로 검색

특정 텍스트를 찾기 위해 TextFragmentAbsorber에 정규식 패턴을 전달하십시오.

var absorber = new TextFragmentAbsorber(@"\d{3}-\d{2}-\d{4}");
doc.Pages.Accept(absorber);  // Search all pages

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text}");
}

텍스트 세그먼트

TextFragment는 텍스트가 서로 다른 글꼴 실행으로 구분될 때 여러 TextSegment 객체를 포함할 수 있습니다.

foreach (var fragment in absorber.TextFragments)
{
    foreach (var segment in fragment.Segments)
    {
        Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
    }
}

폰트 관리

FontRepository는 글꼴을 찾고 로드하는 메서드를 제공합니다.

var font = FontRepository.FindFont("Helvetica");

텍스트 단락 만들기

TextParagraph 은 페이지에 삽입할 다중 행 텍스트 블록을 구성할 수 있게 합니다.

var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));

팁 및 모범 사례

  • 위치 및 글꼴 데이터가 필요할 때는 TextFragmentAbsorber을 사용하고, 일반 텍스트 추출에는 TextAbsorber을 사용하십시오.
  • 더 빠른 결과를 위해 단일 페이지에서 흡수기를 적용하거나, 전체 문서를 검색하려면 doc.Pages을 사용하십시오.
  • 정규식 검색은 기본적으로 대소문자를 구분합니다 — 대소문자를 구분하지 않으려면 (?i) 접두사를 사용하십시오.
  • PDF에 글꼴이 포함되어 있는지 확인하려면 TextState.Font.IsEmbedded을 확인하십시오.
  • 대용량 문서의 경우 메모리 사용량을 관리하기 위해 페이지를 하나씩 처리하십시오.

일반적인 문제

IssueCauseFix
Extracted text is garbledPDF uses a non-standard encoding or CID font mappingCheck font embedding; some scanned PDFs require OCR
No text fragments foundPage content is an image, not textUse an OCR tool to convert image pages to text first
Regex returns no matchesPattern does not account for whitespace inserted by PDF text layoutNormalize whitespace or use a looser pattern
TextState.Font is nullFont resource is missing from the PDFHandle null checks when inspecting font properties

자주 묻는 질문

페이지의 특정 영역에서 텍스트를 추출할 수 있나요?

예. TextFragmentAbsorber.TextSearchOptions.Rectangle를 설정하여 검색을 페이지의 특정 영역으로 제한합니다.

텍스트 추출이 읽기 순서를 유지합니까?

라이브러리는 텍스트를 콘텐츠 스트림 순서대로 반환합니다. 다중 열 레이아웃의 경우, 위치에 따라 조각을 정렬해야 할 수 있습니다.

한 번에 모든 페이지에서 텍스트를 추출할 수 있나요?

예. doc.Pages.Accept(absorber)을 호출하여 문서의 모든 페이지를 검색합니다.


API 참조 요약

Class / MethodDescription
TextAbsorber전체 텍스트를 단일 문자열로 추출합니다
TextFragmentAbsorber위치 및 글꼴 데이터가 포함된 구조화된 텍스트 조각을 추출합니다
TextFragment위치, 텍스트 상태 및 세그먼트를 포함하는 텍스트 실행
TextFragment.Text추출된 텍스트 문자열
TextFragment.Position페이지상의 좌표
TextFragment.TextState글꼴, 크기 및 색상 정보
TextFragment.Segments조각 내의 하위 실행
TextParagraph다중 행 텍스트 블록용 빌더
TextState글꼴 이름, 크기, 색상 및 스타일 속성
FontRepository정적 글꼴 조회 및 로드
FontRepository.FindFont이름으로 글꼴 찾기

또 보기

 한국어