PDFの一部を(白いポリゴンで覆うだけで)非表示にするコードがありますが、これに関する問題は、テキストがまだそこにであるということです。ctrl-fを使用してもそれを見つけることができます。
私の目標は、PDF自体から実際にテキストを削除することです。 pdfminerを使用して、PDFからテキストを抽出することができましたが、実際にテキストをいくつかの空のスペースで「置き換える」ことが可能かどうかはわかりません。 Pythonを使用してそのようなことは可能ですか?それを抽出するだけでは十分ではありません。 PDFからテキストを削除する必要があります
これは一種のメモリを消費しますが、削除する部分を除いてPDFの残りの部分をコピーしてから、削除する部分を含まない新しいバージョンでファイルを上書きすることができます。 PyPDFを使用してこれを行うには、コンテンツストリームを取得し、関連する部分を見つけて削除します。
PyPDFドキュメント https://pythonhosted.org/PyPDF2/PageObject.html?highlight=getcontents#PyPDF2.pdf.PageObject.getContents ;
PDF標準 https://www.Adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf 78ページ、81ページ;
そのようなことは可能ですか?はい、お勧めしませんが。私の意見では、最善の策は、既存のファイルを開いて読み取り、編集可能な形式に移動し、表示したくないテキストを削除してから、元に戻すことです。
ただし、次を使用してデータを抽出し、メモリから削除することができます。
_import PyPDF2
# creating a pdf file object
pdfFileObj = open('example.pdf', 'rb')
# creating a pdf reader object
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
# printing number of pages in pdf file
print(pdfReader.numPages)
# creating a page object
pageObj = pdfReader.getPage(0)
# extracting text from page
print(pageObj.extractText())
# closing the pdf file object
pdfFileObj.close()
_
行ごとに、このプログラムは次のようになります。
pdfFileObj = open('example.pdf', 'rb')
_example.pdf
_を開き、ファイルオブジェクトをpdfFileObj
として保存します。
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
PdfFileReader
のオブジェクトを作成し、PDFファイルオブジェクト全体を渡して、PDFリーダーオブジェクトを取得します。
print(pdfReader.numPages)
ページ数を指定します。
pageObj = pdfReader.getPage(0)
PageObject
クラスのオブジェクトを作成します。 PDFリーダーオブジェクトには関数getPage()
があり、引数としてページ番号(フォームインデックス0から開始)を取り、ページオブジェクトを返します。
print(pageObj.extractText())
PDFページからテキストを抽出します。
pdfFileObj.close()
PDFファイルオブジェクトを閉じます。
特定のテキストのすべてのインスタンス/ケースを削除するため、置換テキストは単に「」になります。