以下是我的pdf提取方法,怎么优化可以把某一页确保不会被分成多个图片存储:def pdf2image(path, pic_path): checkIM = r"/Subtype(?= */Image)" pdf = fitz.open(path) lenXREF = pdf.xref_length() count = 1 for i in range(lenXREF): text = pdf.xref_object(i) isImage = re.search(checkIM, text) # 如果这页内容不是图片 if not isImage: continue pix = fitz.Pixmap(pdf, i) new_name = f"img_{count}.jpg" # ('png', 'pnm', 'pgm', 'ppm', 'pbm', 'pam', 'psd', 'ps', 'jpg', 'jpeg') image_path = os.path.join(pic_path, new_name) pix.pil_save(image_path) count += 1 pix = None
时间: 2024-04-12 11:27:24 浏览: 169
要确保某一页不会被分成多个图片存储,你可以尝试按照以下方法进行优化:
1. 在循环中添加一个变量来跟踪当前页是否已经被处理过。例如,你可以使用一个布尔变量`isProcessed`,初始值设置为False。
2. 在每次处理一页之前,检查`isProcessed`的值。如果为True,说明该页已经被处理过,可以跳过当前循环继续下一页的处理。
3. 如果`isProcessed`为False,则进行图片提取和保存操作。在保存图片后,将`isProcessed`设置为True,表示该页已被处理。
这样做可以确保每一页只被处理一次,避免将同一页的内容分成多个图片存储。
以下是修改后的代码示例:
```python
def pdf2image(path, pic_path):
checkIM = r"/Subtype(?= */Image)"
pdf = fitz.open(path)
lenXREF = pdf.xref_length()
count = 1
isProcessed = False # 添加一个变量来跟踪当前页是否已经被处理过
for i in range(lenXREF):
if isProcessed:
isProcessed = False
continue
text = pdf.xref_object(i)
isImage = re.search(checkIM, text)
if not isImage:
continue
pix = fitz.Pixmap(pdf, i)
new_name = f"img_{count}.jpg"
image_path = os.path.join(pic_path, new_name)
pix.pil_save(image_path)
count += 1
pix = None
isProcessed = True # 设置isProcessed为True,表示该页已被处理
```
通过以上优化,可以确保每一页只被处理一次,避免将同一页的内容分成多个图片存储。希望对你有所帮助!如有其他问题,请随时提问。
阅读全文