Извлечение текстов из отсканированных изображений из файлов docx / do c с использованием Python в CentOS - PullRequest
0 голосов
/ 22 апреля 2020

Я написал приложение, которое извлекает тексты из 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.

Заранее спасибо!

...