Я пытаюсь использовать Оптическое распознавание символов на PDF-файлах отсканированных изображений в python. Это требует извлечения изображений из текста, и именно здесь я столкнулся с проблемами. Некоторые из PDF-файлов, из которых я извлекаю, имеют заголовок ~ на каждой странице, который извлекается один раз на страницу. Есть ли способ избежать этого? В первую очередь я пытаюсь уменьшить количество изображений, которые я должен подать в свой алгоритм OCR.
В настоящее время я занимаюсь извлечением изображений с помощью следующих двух методов, хотя я согласен с использованием другого метода (хотя у меня было несколько часов трудности, когда я просто пытался установить textract и до сих пор не получил его, так что, возможно, не тот пакет).
Метод 1: Poppler's pdfimages tool через командную строку через os
def image_exporter(pdf_path, output_dir):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
cmd = ['pdfimages', '-png', '-p', pdf_path,
'{}/prefix'.format(output_dir)]
subprocess.call(cmd)
print('Images extracted')
Метод 2: Фитц / PyMuPDF
def img_extract(pdf_path, output_dir):
name_start = pdf_path.split('\\')[-1][:15]
doc = fitz.open(pdf_path)
for i in range(len(doc)):
for img in doc.getPageImageList(i):
xref = img[0]
pix = fitz.Pixmap(doc, xref)
name = "p%s-%s.png" % (i, xref)
name = name_start + ' ' + name
name = output_dir + '\\' + name
if pix.n < 5: # this is GRAY or RGB
#pix.writePNG(name)
pix.writeImage(name)
else: # CMYK: convert to RGB first
pix1 = fitz.Pixmap(fitz.csRGB, pix)
#pix1.writePNG(name)
pix1.writeImage(name)
pix1 = None
pix = None
Оба они по сути являются копиями кода, который я нашел в другом месте ( Извлечение изображений из PDF без повторной выборки, в python? является одним из источников).
Я должен также упомянуть, что у меня очень мало понимания структуры самого документа PDF. Так что у меня происходят другие странные вещи (извлечение инвертированных цветных изображений, супер размытых изображений, image1 из pg_x, где есть полученный текст со случайными буквами, отсутствующими, и image2 того же самого pg_x со случайными пропущенными буквами, но ни одной из букв в image1, и т. Д.) , Таким образом, возможно, не менее актуален вопрос, есть ли способ объединить все изображения на одной странице в одно изображение, которое я могу отсканировать с помощью своего кода OCR? В первую очередь я стараюсь не сканировать огромное количество изображений.