2

私はこの件についてかなり迷っています。私はここSOに関するほぼすべての投稿を読んだことがあります。誰かが私を正しい方向に向けてくれれば、とても感謝しています。

PDF があり、そのテキストを抽出したいのですが、単語とスペースだけに関心があります。CGPDFScanner をセットアップしましたが、これはコールバック メソッドです。私が読んだことは、テキストの抽出に関する限り、TJ、Tj、qout(')、および doubleqout(") の 4 つの演算子だけを考慮する必要があるということです。

文字をまとめて単語を形成するか、スペースで区切るかを判断できるように、テキストスペースも追跡する必要があると思います。しかし、私はこれをどのように行う必要があるのか​​ わかりません。

PDF では、すべてのテキストが形式になっています。

[(X)-24.2524(X)-24.2524(X)-24.2524(Y)-24.2524(Y)-24.2524]TJ

しかし、これらの数値が何を意味するのか (PDF 仕様を使用して) 理解できませんでした。SO の誰かが、PDF の仕様を怖がってはいけないと言いましたが、率直に言って、読みやすく、理解しやすいとは思いません。

役に立った PDFKitten コードを調べました。

どんな助けでも大歓迎です。

4

1 に答える 1

6

PDF から単語を抽出する方法についてアドバイスすることはできませんが、

[(X)-24.2524(X)-24.2524(X)-24.2524(Y)-24.2524(Y)-24.2524]TJ

たとえば、PDF 1.7仕様のセクション「9.4.3 Text-Showing Operators」で説明されています。TJオペレーターの説明は次のとおりです。

1 つまたは複数のテキスト文字列を表示して、個々のグリフの配置を許可します。配列の各要素は、文字列または数値のいずれかになります。要素が文字列の場合、この演算子は文字列を表示します。数値の場合、オペレーターはその量だけテキスト位置を調整します。つまり、テキスト行列 Tm を変換します。数値は、テキストスペースの単位の 1000 分の 1 で表す必要があります。

したがって、数字は文字間の距離の調整です。

于 2012-09-17T18:39:45.547 に答える