私は同じソースから同じフォーマットの2つのpdfレポートを持っていますが、唯一の違いはレポートの日付です.2016年、2015年です。PythonがPDFテキストの抽出に失敗しました
https://www.ffiec.gov/nicpubweb/nicweb/InstitutionProfile.aspx?parID_Rssd=1039502&parDT_END=99991231- 移動し、トップから4番目の報告(すなわち、銀行組織システミック・リスクレポート(FR Y-15))の隣にレポートを作成]をクリックします
- あなたの要求をクリックします財務報告書は準備ができており、開くPDFをダウンロードする
- 繰り返し、手順1〜3を代わりに
2つのpdfのは、JPモルガンのために規制当局への申請されているステップ2で2015年12月31日を選択してください。私が望む情報は青色の数字で、左のキーで一意に識別できます。たとえば、2ページ目の最初の項目 - a。デリバティブ契約の現在のエクスポージャーは、M337によって一意に識別することができます。ここで
は、私は番号を取得しようとしたものです:
- 私が「M337」のために、メモ帳++とCtrl-Fに2つのPDFファイルを開いたの。 2016年のpdfの場合、文字列はそこにあり、対応する数値はそれほど遅れていませんでした。 2015 PDFファイルの場合は、しかし、文字列でも数でもないが
を見つけることができる私は、バイナリファイルとしてpythonで
with open('2016.pdf', 'rb') as handle: pdf_str = handle.read()
をPDF年代を開き、pdf_strにM337を探索しました。この文字列は2016.pdfにありますが、2015.pdfにはありません
- Adobe AcrobatのSave As Other機能を使用して、pdfをtxtとして保存しようとしましたが、同じ結果が得られました。 2015.txtで
誰が何が起こっているのか分かりませんか?
私を 'pdftotext'に紹介してくれてありがとう。私はツールを試しましたが、元のpdfの内容の相対的な間隔を無視するという点で、結果のtxtは "フラット"です。たとえば、次の3つのセグメントはpdfの同じ行にありますが、txtの別々の行にあります。デリバティブ契約「M337」、「71624000」の現在のエクスポージャー。どのように私はそれらをtxtの同じ行に表示させることができますか? – Nero
残念ながら、PDFはデータを解析するための恐ろしいファイル形式です。これは、デバイス間でコンテンツを正確かつ一貫して表示するように設計されているため、PDFリーダーのように見える場合でも、PDFの内容はバイナリレベルで有用なテーブルに整理されない可能性があります。私の最善のアドバイスは、PDFを解析し、必要な結果を得るためのツールがあるかどうかを確認するために設計されたPythonライブラリを試してみることです。 – twrightsman
pdftotextを実行しているときにオプションとして-layoutを追加すると、私が望むものが得られます。 – Nero