#python #pdf #blob #ocr #plone
#python #PDF #большой двоичный объект #ocr #plone
Вопрос:
Я создал сайт документов на plone, с которого можно загружать файлы. Я видел, что plone сохраняет их в файловой системе в виде большого двоичного объекта, теперь мне нужно передать их через скрипт python, который будет обрабатывать PDF-файлы, загруженные с помощью OCR. У кого-нибудь есть идеи, как это сделать? Спасибо
Ответ №1:
Не уверен, как извлекать PDF-файлы из хранилища больших двоичных объектов или возможно ли это вообще, но вы можете извлечь их с работающего Plone-сайта (например, выполнение скрипта через просмотр в браузере):
import os
from Products.CMFCore.utils import getToolByName
def isPdf(search_result):
"""Check mime_type for Plone >= 5.1, otherwise check file-extension."""
if mimeTypeIsPdf(search_result) or search_result.id.endswith('.pdf'):
return True
return False
def mimeTypeIsPdf(search_result):
"""
Plone-5.1 introduced the mime_type-attribute on files.
Try to get it, if it doesn't exist, fail silently.
Return True if mime_type exists and is PDF, otherwise False.
"""
try:
mime_type = search_result.mime_type
if mime_type == 'application/pdf':
return True
except:
pass
return False
def exportPdfFiles(context, export_path):
"""
Get all PDF-files of site and write them to export_path on the filessytem.
Remain folder-structure of site.
"""
catalog = getToolByName(context, 'portal_catalog')
search_results = catalog(portal_type='File', Language='all')
for search_result in search_results:
# For each PDF-file:
if isPdf(search_result):
file_path = export_path search_result.getPath()
file_content = search_result.getObject().data
parent_path = '/'.join(file_path.split('/')[:-1])
# Create missing directories on the fly:
if not os.path.exists(parent_path):
os.makedirs(parent_path)
# Write PDF:
with open(file_path, 'w') as fil:
fil.write(file_content)
print 'Wrote ' file_path
print 'Finished exporting PDF-files to ' export_path
В примере структура папок Plone-сайта сохраняется в каталоге экспорта. Если вы хотите, чтобы они располагались в одном каталоге, необходим обработчик для повторяющихся имен файлов.
Комментарии:
1. Де нада, удачного экспорта!