Python使用PDFMiner決議PDF
其中有個LTFigure型別
現在已經知道可以從LTfigure提取LTImage型別的圖片了
請教,LTImage型別即圖片怎么保存的啊
uj5u.com熱心網友回復:
看下有幫助沒:https://www.jianshu.com/p/938763947de3
uj5u.com熱心網友回復:
def parse_lt_objs (lt_objs, page_number, images_folder, text=[]):
#Iterate through the list of LT* objects and capture the text or image data contained in each#
text_content = []
for lt_obj in lt_objs:
if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine):
# text
text_content.append(lt_obj.get_text())
elif isinstance(lt_obj, LTImage):
# text_content.append('<img src=https://bbs.csdn.net/topics/tt" />')
# an image, so save it to the designated folder, and note it's place in the text
saved_file = save_image(lt_obj, page_number, images_folder)
if saved_file:
use html style <img /> tag to mark the position of the image within the text
text_content.append('<img src="'+os.path.join(images_folder, saved_file)+'" />')
else:
print >> sys.stderr, "Error saving image on page", page_number, lt_obj.__repr__
elif isinstance(lt_obj, LTFigure):
LTFigure objects are containers for other LT* objects, so recurse through the children
text_content.append('<Figure src=https://bbs.csdn.net/topics/tt" />')
text_content.append(parse_lt_objs(lt_obj.objs, page_number, images_folder, text_content)) #這句話報錯,你知道為什么嗎?提示說lt_obj沒有objs屬性
return '\n'.join(text_content)
def save_image (lt_image, page_number, images_folder):
#Try to save the image data from this LTImage object, and return the file name, if successful#
result = None
if lt_image.stream:
file_stream = lt_image.stream.get_rawdata()
file_ext = determine_image_type(file_stream[0:4])
if file_ext:
file_name = ''.join([str(page_number), '_', lt_image.name, file_ext])
if write_file(images_folder, file_name, lt_image.stream.get_rawdata(), flags='wb'):
result = file_name
return result
def determine_image_type (stream_first_4_bytes):
#Find out the image file type based on the magic number comparison of the first 4 (or 2) bytes#
file_type = None
bytes_as_hex = b2a_hex(stream_first_4_bytes)
if bytes_as_hex.startswith('ffd8'):
file_type = '.jpeg'
elif bytes_as_hex == '89504e47':
file_type = ',png'
elif bytes_as_hex == '47494638':
file_type = '.gif'
elif bytes_as_hex.startswith('424d'):
file_type = '.bmp'
return file_type
def write_file (folder, filename, filedata, flags='w'):
#Write the file data to the folder and filename combination
#(flags: 'w' for write text, 'wb' for write binary, use 'a' instead of 'w' for append)#
result = False
if os.path.isdir(folder):
try:
file_obj = open(os.path.join(folder, filename), flags)
file_obj.write(filedata)
file_obj.close()
result = True
except IOError:
pass
return result
按照檔案來說這個應該是可以的
uj5u.com熱心網友回復:
已放棄,多謝諸位
uj5u.com熱心網友回復:
請問怎樣從LTfigure提取LTImage型別的圖片?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/81649.html
標籤:其他技術討論專區
上一篇:急
