1

この例のように、DjVu ドライバーで GS を使用します。

gs %gs_args% -dProvideUnicode -dExtractText -sDEVICE=djvusep -o out.sep in.ps

一部のファイルではテキストが正しく抽出されないという問題に気付きました (生成されたファイルからテキストをコピーすると、クリップボードに疑問符が表示されます)。

エンコーディングに問題があると思い、-dProvideUnicodeスイッチを削除しましたが、テキストがまったく抽出されず-dExtractText、このドライバーのみに固有のフラグが正しく機能するために必要であると思います。

単一ページの PDF ファイル (デバイスin.psを介して生成されたもの) を実行しようとすると、テキストも表示されません。しかし、pdfminer、xpdf などの他のツールは、正しいテキストを抽出します。また、Acrobat を使用する SumatraPDF などの PDF ビューアは、期待どおりにテキストを抽出します。ps2writeps2asciimupdf

これらの文書化されていないスイッチについて何か知っている人はいますか?ここで何が問題になる可能性がありますか?

更新ps2write:これは、ルートを通過した場合にのみ発生します。代わりに PDF を直接使用しても問題はありません。

PDFファイルからのエンコード情報は次のとおりです。

c:\temp>pdf-parser -s encoding sample.pdf
obj 11 0
 Type: /Font
 Referencing: 12 0 R, 20 0 R

  <<
    /BaseFont /XQKNMY+TT14112O00
    /FontDescriptor 12 0 R
    /Type /Font
    /FirstChar 32
    /LastChar 144
    /Widths [
253 0 0 0 0 0 0 0 293 293 0 0 220 313 220 0
0 467 467 0 0 0 467 0 467 467 0 0 0 0 0 0
0 680 0 0 0 653 0 773 760 0 0 740 0 833 0 0
0 0 0 480 613 0 680 0 0 0 0 0 0 0 0 0
0 407 513 414 500 414 320 447 513 227 0 467 227 773 513 513
513 0 333 367 293 487 467 667 460 414 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
220]
    /Encoding 20 0 R
    /Subtype /Type1
  >>

obj 20 0
 Type: /Encoding
 Referencing:

  <<
    /Type /Encoding
    /BaseEncoding /WinAnsiEncoding
    /Differences [
144/quoteright]
  >>
4

1 に答える 1

2

これは実際には Ghostscript に関する質問ではありません。djvu デバイスは、Ghostscript ビルドでは明らかに非標準です。これらのスイッチは DejaVu デバイスに固有のものであるため、スイッチについては何も言えません。

ファイルからテキストを抽出するだけの場合は、txtwrite デバイスを使用できます (最近のバージョンの Ghostscript を使用)。

PDF ファイルを使用する場合、ToUnicode CMap がファイルに存在する可能性があり、テキストに関する Unicode 情報を取得するために使用できます。PostScript には ToUnicode CMaps が含まれていないため、Unicode 情報はPostScript ファイルから入手できません。これが、デバイスによって ps2write 出力からテキストを抽出できない理由だと思います。

于 2013-01-25T08:08:48.233 に答える