PDFがPowerPointファイルから生成されたかどうかを判断する信頼できる方法はありますか?
-
06-07-2019 - |
質問
タイトルのように。私が尋ねる理由は、PDFを(pdftotextを使用して)フォーマットされたASCIIテキストに変換しており、合理的に健全に見えるもののみを表示したいということです。
PPTファイルには、画像上にテキスト、斜めのテキスト、およびASCIIにあまりうまく変換されないその他のものが含まれる傾向があるため、可能であればそれらを除外したいと思います。
解決
PDFの作成アプリケーションは、XMPメタデータにリストされています。これは、Acrobat 9で簡単に確認できます(以前も信じています)。 File>に移動します。プロパティ
、 Additional Metadata ...
をクリックし、 Advanced
に移動すると、 XMP Core Properties との両方にリストされます。 PDFプロパティ:
xmp:CreatorTool: Microsoft PowerPoint
pdf:Creator: Microsoft PowerPoint
これをプログラムで見つけたいと思うので、あなたの言語で動作するこのメタデータを読むためのライブラリを見つける必要があります。 ここはいくつかのXMPツールのリストです。
他のヒント
簡単な答え:
いいえ、そうは思いません。
長答:
いいえ、PowerPointファイルをpdfに変換する方法があるかもしれないので、そうは思いません。たとえば、Adobe AcrobatやPDFCreatorなどです。特定の情報をPDFファイルに埋め込むのはコンバーター次第です。ある変換からPowerPointソースpdfを検出する方法を見つけたとしても、同じ方法は別の変換では機能しない可能性があります。
さらに長い回答:
いいえ、「長い答え」で説明されている理由のため、そうは思いません。そして、PDFのソースを検出することは、あなたが解決しようとしている問題に対する最良のアプローチだとは思いません。 PowerPointだけでテキストと画像がオーバーラップするわけではありません。 PDFファイルの実際のレイアウトを検出する方がはるかに良いと思います。画像とテキストのオーバーレイがある場合、それに対応するために何らかのフィルタリングまたは前処理を行います。
あなたの推論は非常にarbitrary意的です-あなたが説明する機能なしの 多くのPPTファイルと、別のソースから生成された 多くのPDFファイルが確かにあります。
理論上、より良い方法は、これらの「不要」がいつ検出されるかです。状況が発生します。ただし、PDF形式は部分的に開いていても(読み取り専用であるため、明らかにオープン形式ではありません)、そのような複雑なデータを抽出することは非常に困難です。
ソースに関係なく、すべてのPDFにこの問題が発生する可能性があります。ほとんどのデスクトップパブリッシングスイートはPDFを出力でき、多くの場合、高品質で派手なPDFプレゼンテーションを誇って販売されています...
" saner"方法は、PDFパーサー、ITextSharp、またはpdfNet ... etcを使用することです。選択したライブラリを使用して、すべての画像の四角形とすべてのテキストの四角形を見つけ、四角形を並べ替えてから、テキストの実質的な重なりがあるかどうかを確認し、画像の長方形-画像と画像の重なりを無視します。その場合、ページやドキュメントを拒否します。
それは完璧ではありませんが、少なくとも、ソースに関係なく、正気でない多くのPDFをキャッチします。追加するその他のヒューリスティックには、色分析が含まれます。 (つまり、重複する領域の色は、「正常」な結果を可能にするのに十分なほど異なっていますか?)
幸運を祈ります
作成者または作成者の情報にその名前を入れるかもしれませんが、この理論を確認するためのコピーがありません。
一般に、ファイルがどこから来たのか、その内容に基づいてどのように生成されたのかをプログラムで(確実に)判断するのは簡単な作業ではありません。結局のところ、ファイルは単なるビットの集まりです。
ファイルが「合理的に正常」に見えるかどうかを判断するためのヒューリスティックの構築に費やすリソースが多くない限り、あなたのニーズに応じて、私はこれを人間の仕事だと考えています。
pptからpdfへのコンバーターは、pdfの最初のコメントで作成者を保持します。
ほとんどのアプリケーションから生成されたPDFは同じように思えます。ファイルから読み取ることができるメタデータが ある可能性があります...