Я пытаюсь прочитать PDF как этот ниже.
До сих пор мне удавалось достичь 95% точности с помощью следующей процедуры:
- Преобразование PDF в изображение с помощью Wand (I 'Я предпочел бы использовать pdf2image, но я в Windows, и я не смог установить poppler)
- Разделить каждую строку на число слева и слово справа.
- Измените размер с коэффициентом, равным 0,85.
- Примените пороговое значение 185.
- Используйте специальные обученные данные для 0-9., - с здесь
С помощью этой процедуры он отлично читает почти каждое число, за исключением того, что иногда он смешивает 3 с, 5 с и 9 с.
Тип изображения, которое я получил после всей этой процедуры, указан ниже
И код:
dir_image = file
pdf = wi(filename=file, resolution=300)
pdfImage = pdf.convert("png")
page = wi(image = img)
page.save(filename = filename)
image = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
#Split into each row would go here but code is too long and doesn't matter
cropped_img_left = cv2.resize(cropped_img_left , None, fx=0.85, fy=0.85, interpolation=cv2.INTER_CUBIC)
ret, cropped_img_left = cv2.threshold(cropped_img_left, 185, 255, cv2.THRESH_BINARY)
У меня нет идей о том, как достичь 100% точности.Вот некоторые идеи, которые я получил:
- Улучшить качество преобразования pdf в png, возможно, с помощью другого инструмента?
- Использовать другие обученные данные, более похожие на мои цифры
- Измените параметры tesseract
Но я немного растерялся и буду признателен за некоторые рекомендации по этому поводу.
Заранее большое спасибо!