Я написал приложение, которое извлекает тексты из doc / docx в среде Windows, используя Python.
Как я это сделал? Преобразовал файлы docx в pdf, используя приведенный ниже код: *
# coverts the docx to pdf for further processing
import win32com.client
import os
def doc_handler(path):
#word = comtypes.client.CreateObject('Word.Application')
wdFormatPDF = 17
out_file = os.path.join(temp_storage_path, "temp_doc.pdf")
word = win32com.client.DispatchEx("Word.Application")
doc = word.Documents.Open(path)
doc.SaveAs(out_file, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()
pdf_handler_for_doc(out_file, path, list_details)
, а затем преобразовал pdf в изображения, используя приведенный ниже код для обработки изображений:
# handles pdfs which has been converted from docx and ppts
from pdf2image import convert_from_path
def pdf_handler_for_doc(pdf_path, path, list_details):
#convertedpdf = pdf2image.convert_from_path(file,dpi=200,grayscale=False,poppler_path="C:/bin/",output_folder=savepath,fmt='jpg')
#pages = convert_from_path(pdf_path, 500)
try:
pages = convert_from_path(path, 120)
total_pages = len(pages)
for index, page in enumerate(pages):
temp_file = list_details[0] + str(index + 1) + '.jpeg'
temp_path = os.path.join(temp_storage_path, temp_file)
page.save(temp_path, 'JPEG')
img_handler_for_pdf(temp_path, path, index, total_pages, list_details)
os.remove(temp_path)
except Exception as e:
print("error", e)
pass
и, наконец, обработал изображения ::
# handles images converted from pdfs which in turn is converted from docx and ppts
def img_handler_for_pdf(temp_path, path, page_number ,total_pages, list_details):
try:
#text = textract.process(temp_path, encoding="ascii", errors='ignore', method='tesseract')
text = tools[0].image_to_string(Image.open(temp_path), lang="eng", builder=pyocr.builders.TextBuilder())
#text = pytesseract.image_to_string(temp_path)
content = removal(str(text))
sheet_handler(list_details, page_number, path, total_pages, content)
except MemoryError as e:
memory_error_files.append(path)
pass
except Exception as e:
exception_files.append(path)
pass
Все было круто, пока я не переместил код в Linux CentOS для развертывания. Linux не поддерживает win32com.client
, поэтому не удалось преобразовать docx
в pdfs
.
В Linux я могу обрабатывать тексты, используя python-docx
, если файлы не содержат изображений внутри него.
Мне действительно нужна помощь в обработке документов с изображениями в среде Linux.
Заранее спасибо!