web-dev-qa-db-ja.com

Pythonを使用してPDFからテキストを置き換える/削除する方法は?

PDFの一部を(白いポリゴンで覆うだけで)非表示にするコードがありますが、これに関する問題は、テキストがまだそこにであるということです。ctrl-fを使用してもそれを見つけることができます。

私の目標は、PDF自体から実際にテキストを削除することです。 pdfminerを使用して、PDFからテキストを抽出することができましたが、実際にテキストをいくつかの空のスペースで「置き換える」ことが可能かどうかはわかりません。 Pythonを使用してそのようなことは可能ですか?それを抽出するだけでは十分ではありません。 PDFからテキストを削除する必要があります

8
Wallace

これは一種のメモリを消費しますが、削除する部分を除いて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ページ;

1

そのようなことは可能ですか?はい、お勧めしませんが。私の意見では、最善の策は、既存のファイルを開いて読み取り、編集可能な形式に移動し、表示したくないテキストを削除してから、元に戻すことです。

ただし、次を使用してデータを抽出し、メモリから削除することができます。

_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ファイルオブジェクトを閉じます。

特定のテキストのすべてのインスタンス/ケースを削除するため、置換テキストは単に「」になります。

0
user11803894