为什么我的代码只从 PDF 的最后一页创建 jpeg,因此只将最后一页写入文本文件?
Why is my code only creating a jpeg from the last page of the PDF and therefore only writing the last page to a text file?
我需要从 PDF 中为某些关键字抓取大量文本,然后在找到的页面上列出这些关键字。诚然,我是 Python 的新手,我只是按照从 PDF 抓取到 JPEG 并将其写入文本的教程开始。但是,我 运行 即使这样也遇到了一些问题。我的问题是,尽管我似乎确实能够将此 PDF 的 some 转换为 txt,但它只占用一页,即最后一页。我的问题是为什么?我该如何解决这个问题?
谢谢
from PIL import Image
import pytesseract
import sys
from pdf2image import convert_from_path
import os
PDF_file = "file2.pdf"
pages = convert_from_path(PDF_file, 500)
image_counter = 1
for page in pages:
filename = "page_"+str(image_counter)+".jpg"
page.save(filename, 'JPEG')
image_counter = image_counter + 1
filelimit = image_counter-1
outfile = "out_text.txt"
f = open(outfile, "a")
for i in range(1, filelimit + 1):
text = str(((pytesseract.image_to_string(Image.open(filename)))))
text = text.replace('-\n', '')
f.write(text)
f.close()
问题出在 filename
声明中。
第一个循环结束时:
for page in pages:
filename = "page_"+str(image_counter)+".jpg"
page.save(filename, 'JPEG')
image_counter = image_counter + 1
您的 filename
变量设置为最终的 image_counter。当您使用 filename
变量读取时,您读取了最后一张图像 1
到 filelimit + 1
时间。
一个解决方案是在第二个循环中重新声明 filename
。
for i in range(1, filelimit + 1):
filename = "page_"+str(i)+".jpg"
text = str(((pytesseract.image_to_string(Image.open(filename)))))
text = text.replace('-\n', '')
f.write(text)
f.close()
这应该可以解决单独读取每个文件名的问题。
我需要从 PDF 中为某些关键字抓取大量文本,然后在找到的页面上列出这些关键字。诚然,我是 Python 的新手,我只是按照从 PDF 抓取到 JPEG 并将其写入文本的教程开始。但是,我 运行 即使这样也遇到了一些问题。我的问题是,尽管我似乎确实能够将此 PDF 的 some 转换为 txt,但它只占用一页,即最后一页。我的问题是为什么?我该如何解决这个问题?
谢谢
from PIL import Image
import pytesseract
import sys
from pdf2image import convert_from_path
import os
PDF_file = "file2.pdf"
pages = convert_from_path(PDF_file, 500)
image_counter = 1
for page in pages:
filename = "page_"+str(image_counter)+".jpg"
page.save(filename, 'JPEG')
image_counter = image_counter + 1
filelimit = image_counter-1
outfile = "out_text.txt"
f = open(outfile, "a")
for i in range(1, filelimit + 1):
text = str(((pytesseract.image_to_string(Image.open(filename)))))
text = text.replace('-\n', '')
f.write(text)
f.close()
问题出在 filename
声明中。
第一个循环结束时:
for page in pages:
filename = "page_"+str(image_counter)+".jpg"
page.save(filename, 'JPEG')
image_counter = image_counter + 1
您的 filename
变量设置为最终的 image_counter。当您使用 filename
变量读取时,您读取了最后一张图像 1
到 filelimit + 1
时间。
一个解决方案是在第二个循环中重新声明 filename
。
for i in range(1, filelimit + 1):
filename = "page_"+str(i)+".jpg"
text = str(((pytesseract.image_to_string(Image.open(filename)))))
text = text.replace('-\n', '')
f.write(text)
f.close()
这应该可以解决单独读取每个文件名的问题。