1

PDF 문서에서 텍스트를 추출하려고합니다. 내가 PDFBox, TET, PDFTextStream 등등과 같은 몇 가지 도구를 테스트했지만, 그들 중 누구도 페르시아 다중 열 PDF 문서의 텍스트를 추출하는 데 적합하지 않습니다.PDFBox에서 열을 어떻게 감지합니까?

현재이 도구의 장점을 결합하여 일부 유용한 정보를 사용하려고합니다. 이제는 페이지의 열 수를 감지하고 이러한 열의 텍스트를 분할하는 방법을 알고 싶습니다.

특별히 PDFBox 또는 PDFTextStream의 클래스가 열 감지 및 작동 원리를 알고 싶습니다.

답변

2

PDFTextStream에 대해서만 말할 수 있지만 작동 방식을 이해하려면 대략 PDFTextStream이 PDF 문서를 보는 방법을 이해하고 싶습니다.

각 문서는 Blocks (많은 수와 중첩이 될 수 있음)으로 구성된 Pages으로 구성됩니다. Blocks은 궁극적으로 Lines을 포함하며, 이는 TextUnits을 포함합니다.

이들 단위의 각각은 x, y, widthheight 속성을 갖는다. 모든 PDF는 좌표에 따라 배치 된 기본 단위입니다. PDFTextStream에 페이지 또는 지역을 "읽"도록 요청하면 객체를보고 X, Y 평면에 레이아웃 된 모습을보고 텍스트로 변환하는 방법에 대한 근사치를 사용합니다. 이것이이 구조를 기계 가독성 있고 구조화 된 데이터로 바꾸는 100 % 완벽한 방법이 없기 때문에 오류가 발생하는 이유입니다.

PDFTextStream에서 getRegionTextfunction and example을 확인해야합니다. PDFTextStream은 독점적입니다 (PDFBox로 이동하는 이유). 텍스트를 가져 오는 데 사용 된 알고리즘에 대한 세부 정보를 제공 할 수는 없지만 위의 간소화 기법을 기반으로합니다.

행운을 빈다.

+0

'PDFTextStream'은 앞에서 설명한대로입니다. 필자는 주요 객체와 이러한 객체의 [인터페이스] (http://downloads.snowtide.com/javadoc/PDFTextStream/2.3.2/com/snowtide/pdf/PDFTextStream.html)를 자세히 추적했습니다. 나는 그것의'API'가 정말로 간단하다고 생각한다. 그러나'PDFTextStream'의 주된 결함은'Right-to-Left' 스크립트 (페르시아어, 아랍어, 히브리어 등)를 지원하지 않는다는 것입니다. 그래서 나는'PDFBox'로 옮겼습니다! 그러나'PDFBox'는'RTL' pdf 문서의 텍스트 추출에 버그가 있습니다. 나는 그것이'Work-Flow' 아키텍처를 가지고 있으며 디버깅하기가 매우 어렵다고 생각합니다. 어쨌든 고마워. – user2041057