2

PDF ブックからテキストを抽出しようとしていますが、テキスト ドキュメントに貼り付けたときに、コピーされたテキストのセクションが適切な大文字と小文字のプロパティを保持できないという問題が引き続き発生します。私は本を​​複製する権利を持ち、必要なすべてのフォントを使用するライセンスも持っています. 最初はフォントが埋め込まれていないことが原因だと思っていましたが、確認したところすべてのフォントがサブセットで埋め込まれているようです。PDF 内には、次のいずれかのプロパティを持つ 100 を超えるフォントが使用されています。

TrueType エンコーディング: Ansi TrueType (CID) エンコーディング: Identity-H Type 1 (CID) エンコーディング: Identity-H Type 1 エンコーディング: カスタム

書籍内の言語には、英語、ドイツ語、スペイン語、イタリア語が含まれます。ドイツ語では、大文字は絶対に重要です。小文字よりも大文字のプロパティが失われる傾向があります。

エラーの例: WELD -> 溶接

私はここで何をすべきか本当に途方に暮れています。本の所有者に、彼が行ったフォントをサブセットとして埋め込むように依頼しましたが、問題は続きます。PDF ファイルを PostScript として保存してから、distiller で実行しましたが、問題の多くは正しく解決されましたが、場合によっては、テキストが別の文字または数字に置き換えられて頭蓋骨として表示されました。CID フォントが問題の原因である可能性があることは理解していますが、CID 以外のフォントでも同じ結果が得られた例に遭遇しました。

この問題の原因は何ですか? フォントが完全に埋め込まれているのではなくサブセットであるということですか? ネイティブ ファイル (InDesign) を pdf に保存して、フォントの抽出を改善するより良い方法はありますか? 非 Unicode フォントと関係がありますか? もしそうなら、所有者が別のフォントを選択する必要のない代替手段はありますか?

あらゆる支援に感謝します。

4

2 に答える 2

2

それは確かに面白いです。OP によって提供されるサンプル PDF には実際に大文字が目に見えて含まれており、一部は大文字のみの行に、一部は大文字と小文字が混在する行に含まれており、Adobe Reader によって小文字として抽出されます。

あなたは疑問に思います

この問題の原因は何ですか?

例として、それがどのように起こるかを見てみましょうPelle Più bella

ページ コンテンツでは、このフレーズは実際には大文字の視覚的表現のように見えます。

/T1_0 1 Tf
-0.025 Tc 12 0 0 12 379.5354 554.8809 Tm
(PELLE PI\331 BELLA)Tj

使用されているフォントT1_0 (DIN-Bold サブセット) を見ると、WinAnsiEncodingを使用していると主張していることがわかります。これは、ページ ストリーム内のこれらの文字コードを大文字として解釈することも示します。

ただし、フォントにはToUnicodeマッピングもあり、このマッピングがマップされます

<41> <0061> — 'A' → a
<42> <0062> — 'B' → b
<43> <0043> — 'C' → C
<44> <0044> — 'D' → D
<45> <0065> — 'E' → e
<49> <0069> — 'I' → i
<4C> <006C> — 'L' → l
<4D> <004D> — 'M' → M
<4E> <006E> — 'N' → n
<50> <0050> — 'P' → P
<52> <0072> — 'R' → r
<53> <0053> — 'S' → S
<54> <0074> — 'T' → t
<D9> <00F9> — 'Ù' → ù

(WinAnsiEncoding で大文字を表す文字コードからのみマッピングを抽出しました。)

ネイティブ ファイル (InDesign) を pdf に保存して、フォントの抽出を改善するより良い方法はありますか?

申し訳ありませんが、私は InDesign にはあまり興味がありません。しかし、そのソフトウェアが Adob​​e からのもので、それが InDesign のバグなのか、PDF へのエクスポートなのか、私は驚くでしょう。代わりに、 PELLE PIÙ BELLAPelle Più bellaとしてタグ付けする InDesign ファイルにいくつかの情報があり、PDF エクスポートで InDesign がこの ToUnicode マッピングに変換する可能性がありますか?

それは非 Unicode フォントと関係がありますか? もしそうなら、所有者が別のフォントを選択する必要のない代替手段はありますか?

サンプル ドキュメントの場合、3 つのフォントがあり、すべてにエンコーディングエントリWinAnsiEncoding があり、それらはすべて埋め込みサブセットですが、このような面白いToUnicodeマッピングを持つのは DIN-Medium と DIN-Bold の 2 つだけですが、Helvetica にはToUnicodeがありません。マッピング。だから、どういうわけかフォントに関連しています。正確には言えません。

サンプル ドキュメントの場合の回避策は、フォント ディクショナリからToUnicodeマッピングを削除することです。

たとえば、Java と iText ライブラリを使用すると、次のように実行できます。

PdfReader reader = new PdfReader(INPUT);
for (int i = 1; i <= reader.getXrefSize(); i++)
{
    PdfObject obj = reader.getPdfObject(i);
    if (obj != null && obj.isDictionary())
    {
        PdfDictionary dic = (PdfDictionary) obj;
        if (PdfName.FONT.equals(dic.getAsName(PdfName.TYPE)))
        {
            dic.remove(PdfName.TOUNICODE);
        }
    }
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(OUTPUT));
stamper.close();
reader.close();

この操作の後、Adobe Reader のテキスト抽出により、

PELLE PIÙ BELLA

これは明らかに、サンプル ドキュメントのような状況でのみ機能します。

他のドキュメントに、テキスト抽出のためにそれぞれのToUnicodeマップを必要とするフォントと、上記の問題のあるフォントのようなフォントが混在している場合、Java コードにいくつかの条件を追加して、バグのあるフォント定義。

于 2013-07-23T07:47:37.953 に答える
0

PDF フープをジャンプする必要はありません。そもそも、テキスト交換形式としては適切ではありません。

ネイティブ ファイル (InDesign) を pdf に保存して、フォントの抽出を改善するより良い方法はありますか?

ファイル プロバイダーに RTF エクスポートを依頼してください。これにより、使用されているすべてのフォントと書式が保持されます。

WELD-weld の問題は、フォント (同じグリフにマッピングされた大文字と小文字の両方が含まれている場合)、All Capitals などの OpenType 機能の使用、または内部で不適切に作成されたテキストのみのストリームのようなものが原因である可能性があります。 PDF.

于 2013-07-19T13:42:47.690 に答える