PDF 테이블 추출

PDF는 다양한 분야에서 가장 널리 사용되는 문서 형식 중 하나가 되었습니다. 다양한 경우에 데이터가 표 형식으로 표시되는 송장을 생성하는 데 사용됩니다. 이러한 경우 프로그래밍 방식으로 테이블에서 데이터를 읽으려면 PDF를 구문 분석해야 할 수 있습니다. 이를 달성하기 위해 이 기사에서는 C#을 사용하여 PDF 테이블에서 데이터를 추출하는 방법을 다룹니다.

PDF에서 테이블을 추출하는 C# API

PDF 파일의 테이블에서 데이터를 추출하기 위해 Aspose.PDF for .NET을 사용합니다. 광범위한 PDF 조작 기능을 제공하는 강력한 API입니다. API를 다운로드하거나 NuGet을 사용하여 설치할 수 있습니다.

PM> Install-Package Aspose.PDF

C#의 PDF 테이블에서 데이터 추출

다음은 C#을 사용하여 PDF의 테이블에서 데이터를 추출하는 단계입니다.

다음 코드 샘플은 C#의 PDF 테이블에서 텍스트를 추출하는 방법을 보여줍니다.

// 원본 PDF 문서 로드
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// 페이지 반복                      
foreach (var page in pdfDocument.Pages)
{
	// 테이블 업소버를 만들고 페이지를 방문하십시오.
	Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
	absorber.Visit(page);
	
	// 각 흡수된 테이블을 통해 루프 
	foreach (AbsorbedTable table in absorber.TableList)
	{
		Console.WriteLine("Table");
		
		// 테이블의 각 행을 반복합니다.
		foreach (AbsorbedRow row in table.RowList)
		{
			// 행의 각 셀을 반복합니다.
			foreach (AbsorbedCell cell in row.CellList)
			{       
				// 텍스트 조각 반복
				foreach (TextFragment fragment in cell.TextFragments)
				{
					var sb = new StringBuilder();
					foreach (TextSegment seg in fragment.Segments)
						sb.Append(seg.Text);
					Console.Write($"{sb.ToString()}|");
				}                           
			}
			Console.WriteLine();
		}
	}
}

페이지의 특정 영역에서 테이블 추출

다음은 C#을 사용하여 PDF 페이지의 특정 부분에서 테이블을 추출하는 단계입니다.

다음 코드 샘플은 PDF 페이지의 특정 영역에서 테이블을 추출하는 방법을 보여줍니다.

// 원본 PDF 문서 로드
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// 페이지를 선택하고 정사각형 주석을 추출합니다.
var page = pdfDocument.Pages[1];
var squareAnnotation =
	page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
	as Annotations.SquareAnnotation;

// 테이블 업소버 생성 및 페이지 방문
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);

// 목록의 각 흡수된 테이블을 반복합니다. 
foreach (AbsorbedTable table in absorber.TableList)
{
	var isInRegion = (squareAnnotation.Rect.LLX < table.Rectangle.LLX) &&
	(squareAnnotation.Rect.LLY < table.Rectangle.LLY) &&
	(squareAnnotation.Rect.URX > table.Rectangle.URX) &&
	(squareAnnotation.Rect.URY > table.Rectangle.URY);

	if (isInRegion)
	{
		// 테이블의 각 행을 통해 루프
		foreach (AbsorbedRow row in table.RowList)
		{
			// 행의 각 셀을 반복합니다.
			foreach (AbsorbedCell cell in row.CellList)
			{
				// 텍스트 조각을 반복하고 텍스트를 인쇄하십시오.
				foreach (TextFragment fragment in cell.TextFragments)
				{
					var sb = new StringBuilder();
					foreach (TextSegment seg in fragment.Segments)
					{
						sb.Append(seg.Text);
					}
					var text = sb.ToString();
					Console.Write($"{text}|");
				}
			}
			Console.WriteLine();
		}
	}
}

무료 라이선스 받기

임시 라이선스를 사용하여 평가 제한 없이 Aspose.PDF for .NET을 사용할 수 있습니다.

결론

이 기사에서는 C#을 사용하여 PDF의 테이블에서 데이터를 추출하는 방법을 배웠습니다. 또한 PDF에서 페이지의 특정 영역에서 표를 추출하는 방법을 살펴보았습니다. 문서를 사용하여 C# PDF API에 대해 자세히 알아볼 수 있습니다. 또한 포럼에 질문을 게시할 수 있습니다.

또한보십시오