Распознать сканы pdf

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


В прошлой статье писал про то, как скачивали файлы из базы, тут речь пойдет о том, как распознать сканы pdf, среди этих документов. Дело в том, что нужно вытащить информацию из таблиц и анализировать их в дальнейшем, поэтому надо сканы перевести в формат, который можно обработать с помощью python. На сайте pypi.org есть библиотека pytesseract от Google. Так как требуется установка движка от Google на компьютер и плюс в нашем случае это будет работа с документами которые могут содержать конфиденциальную информацию то все действия будут проводиться на внутреннем компьютере не имеющем выхода в сеть. И так скачав необходимый файл и прописав к нему путь в коде мы можем приступить к обработке файлов с помощью python:

try:     from PIL import Image except ImportError:     import Image import pytesseract pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_tesseract_executable>' print(pytesseract.image_to_string(Image.open('test.png')))

Для начала все pdf файлы мы переводим в другой формат (например, .png) с помощью библиотеки fitz:

import fitz from PIL import Image  pdffile = 'C:/full_path /MsWord/526.pdf' doc = fitz.open(pdffile) page = doc.loadPage(0) #number of page pix = page.getPixmap() output = 'C:/.. /outfile.png' pix.writePNG(output)

Далее все .png с помощью библиотеки pytesseract мы распознаем в текст (указывая конечно же какой язык мы используем)

import pytesseract pytesseract.pytesseract.tesseract_cmd = "C:/Anaconda3/Tesseract-OCR/tesseract.exe" img = Image.open(output) text = pytesseract.image_to_string(img, lang = 'rus') print(text)

К сожалению бесплатная библиотека от Google очень плохо распознает потому как на выводе получился текст, который сильно отличался по смыслу от оригинала! Для типовых документов эту проблему можно решить путем написания нейронной сети  и обучения ее на выборке этих документах, после чего подцеплять к pytesseract. Таким образом, мы можем просто дообучить pytesseract для своих задач, что бы он распознавал файлы без ошибок, но проблема в том, что это не универсальное решение и под каждый тип документов приходилось бы дообучать pytesseract, что не делает этот метод универсальным. Так как в наборе программных инструментов была лицензия ABBYY FineReader, то было принято решение все скачанные файлы прогонять через ABBYY и сохранять в нужном формате.


Источник: newtechaudit.ru

Комментарии: