2

セマンティック分析作業のため、iTextSharp を使用して PDF ファイルから段落を識別する必要があります。iTextSharp の座標がページの左下隅にあることを知っています。段落の境界を定義する 3 つの機能を見つけました。

  1. 1 行の最初の単語の横軸が一般行の横軸より小さい場合。
  2. 連続する 2 行の先頭が一般的な行よりも大きい場合。
  3. 1 行が「.」で終わる場合 末尾の単語の横軸は他の行の横軸よりも小さい

しかし、私は2番目のものにこだわっています。段落内の 2 つの行の間の一般的な行間を知るにはどうすればよいですか? 「f」、「g」などの一部の文字は、「a」、「n」などの他の文字よりも多くのスペースを必要とするため、2 つの連続する行の間に異なるギャップがあることを意味します。

ご協力いただきありがとうございます!

4

1 に答える 1

2

iTextSharp で利用可能なパーサー機能を使用して PDF ファイルを解析していると仮定しています。たとえば、iText/iTextSharpを使用して PDF ファイルからフォントの高さと回転を抽出するを参照して、他の人がこれをどのように行ったかを確認してください。より詳細な記事はこちら: Using Open Source PDF Technology to Solve the Unstructured Data Problem in Healthcare

あなたの質問は次のとおりです。どうすればリーディングを計算できますか? つまり、2 つの連続する線の基線間の距離を知るにはどうすればよいですか?

iTextSharp を使用して PDF を解析すると、各行が一連のTextRenderInfoオブジェクトとして表示されます。これらのオブジェクトを使用すると、テキストのベース ラインを取得できます。

LineSegment baseline = renderInfo.GetBaseline();
Vector startpoint = baseline.GetStartPoint();

これVectorは、さまざまな要素で構成されています: Itextsharp で ITextExtractionStrategy と LocationTextExtractionStrategy を使用して文字列の座標を取得する

が必要startpoint[Vector.I2]です。参照: iTextSharp を使用して PDF から改行を検出する方法

連続する 2 行の値の差は、現代的な意味での先頭の値を示します。昔の印刷では、すべての文字は固定サイズのブロックでした。プリンター (機械ではなく人) は、ブロックの行の間に鉛のストリップを入れて、行間に余分なスペースを作ります。現代のコンピューティングでは、この言葉は保存されていましたが、その意味は変化しました。「ブロック」はもうありませんが、フォントサイズを操作できます。フォント サイズは、フォント内のグリフの平均サイズです。グリフによって高さのスペースが大きくなったり、小さくなったりしますが、リーディング (ベースライン間の距離) とフォント サイズ (各グリフの平均の高さ) の両方を考慮に入れると、「間のスペース」についてかなりのアイデアを得ることができます。台詞"。

于 2016-04-08T06:25:46.660 に答える