【发布时间】:2017-07-27 03:57:48
【问题描述】:
我相信这是我的第一个 StackOverflow 问题,所以请善待。
我正在对每个 50-200 页不等的 PDF 存储库(总共约 1GB)进行 OCR,发现突然间我的 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
【问题讨论】:
标签: python pdf imagemagick ocr wand