Python 은 PDF 에서 지정 한 내용 을 추출 하고 새 파일 을 생 성 합 니 다.
그러나 추출 하고 자 하 는 페이지 번 호 를 예지 하지 않 고 지 정 된 내용 을 포함 하 는 페이지 추출 을 새로운 PDF 로 통합 하고 자 하 는 경우 가 많 습 니 다.본 고 는 두 가지 실제 수 요 를 예 로 들 어 설명 하고 자 합 니 다.
01 수요 설명
데 이 터 는 286 페이지 의 상장 회사 공개 연보 PDF 로 대체적으로 다음 과 같다.
지금 은 Python 을 이용 하여 다음 과 같은 두 가지 요 구 를 완성 해 야 합 니 다.
“
필요 1:전략 이라는 두 글 자 를 포함 하 는 모든 페이지 를 추출 하고 새 PDF 통합
필요 2:그림 을 포함 하 는 모든 페이지 를 추출 하여 각각 PDF 파일 로 저장
”
02 선행 지식 과 논리 정리
2.1
PyPDF2
모듈 합병 실현PyPDF2
모듈 을 가 져 오 는 코드 는 항상:
from PyPDF2 import PdfFileReader, PdfFileWriter
여기에 두 가지 방법 을 가 져 왔 습 니 다.PdfFileReader
는 리더PdfFileWriter
는 기록 기PyPDF2
를 이용 하여 합병 운용 을 실현 하 는 논리:은밀 한 지식 포인트:읽 기 는 읽 은 내용 을 한 페이지 한 페이지 만 기록 기 에 전달 할 수 있 습 니 다.
2.2 페이지 가 져 오기 및 추가
이전에 우리 의 트 윗 에서 이 두 가지 코드 를 언급 했 는데,아래 열거 한 것 은 복습 으로 한다.
.getPage
특정 페이지 가 져 오기.addPage
특정 페이지 추가본 고의 수 요 를 실현 하려 면 매우 중요 한 판단 을 해 야 한다.페이지 에 포 함 된 문자 나 그림 이 있 는 지 확인 해 야 한다.
특정한 문자 가 포함 되 어 있 는 지 여 부 를 판단 하 는 것 이 비교적 간단 합 니 다.모든 페이지 를 옮 겨 다 닐 때 포 함 된 텍스트 를 추출 하여 제출 하고 문자열 차원 의 판단 을 하면 됩 니 다.코드 사고:
pdfplumber
.extract_text()
방법 으로 현재 페이지 의 문 자 를 추출fitz
과re
의 협 조 를 고려 하여 다음 코드 를 구체 적 으로 볼 수 있다.03 코드 구현
3.1 수요 1 의 실현
먼저 필요 한 작업 을 수행 하고 필요 한 라 이브 러 리 를 가 져 옵 니 다.PDF 파일 을 읽 는
PyPDF2
과 텍스트 추출pdfplumber
from PyPDF2 import PdfFileReader, PdfFileWriter
import pdfplumber
파일 이 있 는 경 로 를 지정 하고 기록 기 를 초기 화하 여 파일 을 리더 에 게 전달 합 니 다.
path = r'C:\xxxxxx'
pdf_writer = PdfFileWriter()
pdf_reader = PdfFileReader(path + r'\ .PDF')
컨 텍스트 관리자 형식 으로pdfplumber
파일 을 열 고.getNumPages
로 리더 의 최대 페이지 를 가 져 오 는 것 은 각 페이지 를 옮 겨 다 니 며 문 자 를 추출 하 는 데 유리 합 니 다.
with pdfplumber.open(path + r'\ .PDF') as pdf:
for i in range(pdf_reader.getNumPages()):
page = pdf.pages[i]
print(page.extract_text())
우리 가 문 자 를 추출 하 는 목적 은 요구 에 부합 되 는 페이지 번 호 를 리더.getPage
의 매개 변수 로 판단 하고 마지막 으로.addPage
로 기록 기 에 전달 하 는 것 이다.
with pdfplumber.open(path + r'\ .PDF') as pdf:
for i in range(pdf_reader.getNumPages()):
page = pdf.pages[i]
print(page.extract_text())
if ' ' in page.extract_text():
pdf_writer.addPage(pdf_reader.getPage(i))
print(i + 1, page.extract_text())
인식 이 끝 난 후 기록 기 를 필요 한 파일 이름 으로 출력 합 니 다:
with open(path + r'
ew_ .pdf', 'wb') as out:
pdf_writer.write(out)
이로써 우 리 는 특정 문자 콘 텐 츠 페이지 를 포함 한 추출 을 완료 하고 PDF 로 통합 했다.모든 페이지 에는'전략'이라는 두 글자 가 포함 되 어 있 습 니 다.필요 한 완전한 코드 는 다음 과 같 습 니 다.관심 있 는 독 자 는 스스로 연구 할 수 있 습 니 다.
from PyPDF2 import PdfFileReader, PdfFileWriter
import pdfplumber
path = r'C:\xxx'
pdf_writer = PdfFileWriter()
pdf_reader = PdfFileReader(path + r'\ .PDF')
with pdfplumber.open(path + r'\ .PDF') as pdf:
for i in range(pdf_reader.getNumPages()):
page = pdf.pages[i]
print(page.extract_text())
if ' ' in page.extract_text():
pdf_writer.addPage(pdf_reader.getPage(i))
print(i + 1, page.extract_text())
with open(path + r'
ew_ 1.pdf', 'wb') as out:
pdf_writer.write(out)
3.2 수요 2 의 실현다음은 필요 한 두 가지 임 무 를 완수 하 겠 습 니 다.먼저 필요 한 라 이브 러 리 가 져 오기:
from PyPDF2 import PdfFileReader, PdfFileWriter
import fitz
import re
import os
파일 이 있 는 경 로 를 지정 합 니 다:
path = r'C:\xxxxxx'
정규 식별 이미지 의 부분 은 자세히 설명 하지 않 습 니 다.이전의 트 윗 은 이미 소 개 했 습 니 다.우 리 는 코드 를 직접 봅 니 다.
page_lst = []
checkImg = r"/Subtype(?= */Image)"
pdf = fitz.open(path + r'\ .PDF')
lenXREF = pdf._getXrefLength()
for i in range(lenXREF):
text = pdf._getXrefString(i)
isImage = re.search(checkImg, text)
if isImage:
page_lst.append(i)
print(page_lst)
그림 이 포 함 된 모든 페이지 를 가 져 온 다음 리더 와 기록 기의 조합 을 결합 하면 새 PDF 가 생 성 됩 니 다.이 수 요 는 모든 그림 을 단독으로 출력 하 는 것 이 므 로 페이지 를 가 져 온 후 기록 기 에 직접 파일 로 출력 하 십시오.
pdf_reader = PdfFileReader(path + r'\ .PDF')
for page in page_lst:
pdf_writer = PdfFileWriter()
pdf_writer.addPage(pdf_reader.getPage(page))
with open(path + r'\ _{}.pdf'.format(page + 1), 'wb') as out:
pdf_writer.write(out)
이로써 두 번 째 수요 도 달성 했다.설명 할 것 은 현재 PDF 이미 지 를 완벽 하 게 추출 하 는 방법 이 없고 본 사례 에서 소개 한 방법 으로 이미 지 를 식별 하 는 것 도 불안정 하 다 는 것 이다.독 자 는 자신의 데 이 터 를 이용 하여 많이 시도 할 수 있다.전체 코드 는 다음 과 같 습 니 다:
from PyPDF2 import PdfFileReader, PdfFileWriter
import fitz
import re
import os
path = r'C:\xxx'
page_lst = []
checkImg = r"/Subtype(?= */Image)"
pdf = fitz.open(path + r'\ .PDF')
lenXREF = pdf._getXrefLength()
for i in range(lenXREF):
text = pdf._getXrefString(i)
isImage = re.search(checkImg, text)
if isImage:
page_lst.append(i)
print(page_lst)
pdf_reader = PdfFileReader(path + r'\ .PDF')
for page in page_lst:
pdf_writer = PdfFileWriter()
pdf_writer.addPage(pdf_reader.getPage(page))
with open(path + r'\ _{}.pdf'.format(page + 1), 'wb') as out:
pdf_writer.write(out)
이 두 개의 단일 수 요 를 실현 한 후에 관련 코드 를 밀봉 하고 os 등 모듈 과 결합 하여 대량 조작 을 실현 하여 두 손 을 해방 시 킬 수 있다.파 이 썬 이 PDF 에서 지정 한 내용 을 추출 하고 새 파일 을 만 드 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 파 이 썬 이 PDF 에서 지정 한 내용 을 추출 하 는 것 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.