我相信这是我的第一个StackOverflow问题,所以请你好。
我正在OCRing PDF的存储库(总共约1GB),每个50-200页,发现我的Macbook Pro上剩余的100GB剩余硬盘空间突然消失了。基于之前的帖子,似乎ImageMagick是显示here的罪魁祸首。
我发现这些文件被称为“magick - *'并存储在/ private / var / tmp中。仅有23个PDF文件,它创建了3576个文件,共计181GB。
如何在不再需要代码后立即删除这些文件?提前感谢您提出任何解决此问题的建议。
以下是代码:
import io, os
import json
import unicodedata
from PIL import Image as PI
import pyocr
import pyocr.builders
from wand.image import Image
from tqdm import tqdm
# Where you want to save the PDFs
destination_folder = 'contract_data/Contracts_Backlog/'
pdfs = [unicodedata.normalize('NFKC',f.decode('utf8')) for f in os.listdir(destination_folder) if f.lower().endswith('.pdf')]
txt_files = [unicodedata.normalize('NFKC',f.decode('utf8')) for f in os.listdir(destination_folder) if f.lower().endswith('.txt')]
### Perform OCR on PDFs
def ocr_pdf_to_text(filename):
tool = pyocr.get_available_tools()[0]
lang = 'spa'
req_image = []
final_text = []
image_pdf = Image(filename=filename, resolution=300)
image_jpeg = image_pdf.convert('jpeg')
for img in image_jpeg.sequence:
img_page = Image(image=img)
req_image.append(img_page.make_blob('jpeg'))
for img in req_image:
txt = tool.image_to_string(
PI.open(io.BytesIO(img)),
lang=lang,
builder=pyocr.builders.TextBuilder()
)
final_text.append(txt)
return final_text
for filename in tqdm(pdfs):
txt_file = filename[:-3] +'txt'
txt_filename = destination_folder + txt_file
if not txt_file in txt_files:
print 'Converting ' + filename
try:
ocr_txt = ocr_pdf_to_text(destination_folder + filename)
with open(txt_filename,'w') as f:
for i in range(len(ocr_txt)):
f.write(json.dumps({i:ocr_txt[i].encode('utf8')}))
f.write('\n')
f.close()
except:
print "Could not OCR " + filename
答案 0 :(得分:1)
处理这个问题的一种黑客方法是在主循环中添加一个os.remove()语句,以在创建后删除tmp文件。
tempdir = '/private/var/tmp/'
files = os.listdir(tempdir)
for file in files:
if "magick" in file:
os.remove(os.path.join(tempdir,file))
答案 1 :(得分:0)
Image
应该用作上下文管理器,因为Wand确定处理资源的时间,包括临时文件,内存缓冲区等。 with
阻止帮助Wand在需要这些Image
个对象时以及现在不需要这些对象时知道边界。
另请参阅official docs。