Проверяем сведения о недостоверности в выписках из ЕГРЮЛ. Склеиваем pdf на python

PythonPDF
В настоящее время весьма актуальной темой остается возможность налогового органа исключить из ЕГРЮЛ общество всего лишь ”выявив” в отношении компании так называемые недостоверные сведения. Как показывает статистика с сентября 2018 года ФНС исключила из ЕГРЮЛ 90 тысяч организаций с записью о недостоверности сведений о руководителе, учредителе или адресе юрлица. Обнаружить тот факт, что в отношении компании имеются недостоверные сведения можно лишь просмотрев выписку из ЕГРЮЛ.

Выглядит это примерно следующим образом:



Проблема усугубляется тем, что данные о недостоверности могут появиться как по заявлению заинтересованного лица так и “сами по себе”, в результате действий налогового органа. Чтобы обезопасить себя от внезапного вылета из ЕГРЮЛ выписки требуется получать регулярно. Как это делать быстро и безболезненно при наличии в холдинге большого количества компаний, мы разобрали в предыдущем посте.

В этот раз разберем как искать сведения о недостоверности в выписках ЕГРЮЛ.

Будем считать, что у нас имеется n-е количество выписок, которые мы скачали с сайта ФНС. Выписки имеют расширение .pdf и какие-то наименования.

Все, что от нас требуется это осуществить поиск по слову “недост” в каждом pdf файле.

Открывать каждый pdf файл с выпиской и производить поиск не наш метод. Это может занять избыточно много времени. Можно склеить все файлы в Abbyy Finereader, но это тоже займет достаточно времени.

Напишем программу, которая склеит все pdf файлы в один. Python позволяет это сделать за секунды!

В дальнейшем мы сможем открыть созданный файл и провести поиск по требуемому слову сразу по всем выпискам из ЕГРЮЛ.

Начнем.

*Выписки из ЕГРЮЛ у нас находятся в директории С:\1.
В новом файле python импортируем модули для работы с pdf и системой в целом:

import PyPDF2, os

Далее создаем пустой список и перемещаемся в директорию C:\1, в которой будут находиться все наши выписки.

Данная директория не обязательно должна быть пустая. В программе мы предусмотрели обработку только тех файлов, которые имеют расширение pdf:

pdfFiles = []
os.chdir('C:\\1')
for filename in os.listdir('.'):
    if filename.endswith('.pdf'):
        pdfFiles.append(filename)
pdfFiles.sort()

Следующий блок склеивает выписки между собой, добавляя каждую последующую выписку в конец:

pdfWriter = PyPDF2.PdfFileWriter()
# Loop through all the PDF files.
for filename in pdfFiles:
    pdfFileObj = open(filename, 'rb')
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

    # Loop through all the pages and add them.
    for pageNum in range(0, pdfReader.numPages):
        pageObj = pdfReader.getPage(pageNum)
        pdfWriter.addPage(pageObj)

Осталось только сохранить результат:

pdfOutput = open('all.pdf', 'wb')
pdfWriter.write(pdfOutput)
pdfOutput.close()

Итак, после работы программы, мы получили файл all.pdf, по которому уже можно искать требуемую информацию о недостоверности сведений.

Скачать программу для склейки pdf в один – здесь.

Продолжение от 08.11.2019


Нарезаем выписки ЕГРЮЛ, сохраняя от каждой выписки первые 4 страницы.
Сведения о недостоверности о юр. лице попадают в разные части выписки ЕГРЮЛ.
В конце выписки содержатся записи о недостоверности, которые были аннулированы налоговой.
Таким образом прогонять программу по целым выпискам ЕГРЮЛ вряд ли целесообразно: программа найдет и эти устаревшие записи.
Поэтому нарежем с помощью pyhton скачанные выписки ЕГРЮЛ, сохраняя от каждой первые 4 страницы. Как правило, этих страниц достаточно, чтобы найти признаки недостоверности в адресе или единоличном исполнительном органе.
Переместим все скачанные ранее выписки (pdf файлы) в условную папку по пути 'C:\1\2'и выполним код python:
#! python3
import PyPDF2, os
from datetime import datetime

start = datetime.now()
os.chdir('C:\\1\\2')
pdfFiles = []

for filename in os.listdir('.'):
    if filename.endswith('.pdf'):
        pdfFiles.append(filename)
pdfFiles.sort()

pdfWriter = PyPDF2.PdfFileWriter()

# Loop through all the PDF files.
for filename in pdfFiles:
    pdfFileObj = open(filename, 'rb')
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

    # Loop through all the pages and add them.
    for pageNum in range(0, 4):
        pageObj = pdfReader.getPage(pageNum)
        pdfWriter.addPage(pageObj)

# Save the resulting PDF to a file.
pdfOutput = open('all-small.pdf', 'wb')
pdfWriter.write(pdfOutput)
pdfOutput.close()
print(datetime.now()- start)

На выходе мы получим выписки ЕГРЮЛ, склеенные в единый pdf файл — «all-small.pdf». При чем от каждой выписки будут только первые 4 страницы.

Теперь прогоним «all-small.pdf» через поиск фразы «недостов»:
#!/usr/bin/python

import fitz,os

filename = "all-small.pdf"  
search_term = "недостов"  
pdf_document = fitz.open(filename)

for current_page in range(len(pdf_document)):  
   page = pdf_document.loadPage(current_page)
   if page.searchFor(search_term):
       print("%s найдено на странице %i" % (search_term, current_page+1))


Программа работает заметно быстрее, чем поиск в едином склееном pdf файле через 'Аcrobat reader' и при этом выводит в терминал страницы, на которых были найдена недостоверность.
Теги:pythonpdfавтоматизация рутиныюристам салют
Хабы: Python PDF
+12
3,3k 51
Комментарии 13

Похожие публикации

Python для работы с данными
25 января 202131 500 ₽Нетология
Python QA Engineer
16 марта 202160 000 ₽OTUS
Python-разработчик
28 января 202199 000 ₽Яндекс.Практикум
Мидл python-разработчик
11 февраля 202185 000 ₽Яндекс.Практикум
UX/UI дизайнер
25 января 2021104 900 ₽Нетология

Лучшие публикации за сутки