Files
doczyai-pipelines/ops_scripts/CNC/local_pdf_files_info.py
T

51 lines
1.6 KiB
Python
Raw Normal View History

import os
import csv
import glob
from PyPDF2 import PdfReader
from concurrent.futures import ThreadPoolExecutor, as_completed
"""
This script will collect the following information for all PDF files in a directory and its subdirectories:
- File Name
- File Path
- Page Count
The information will be saved in a CSV file.
NOTE: This script is required mainly in the pre-doczy analysis. There might not be need for this since CNC project is already processed through the textract pipeline.
"""
def get_pdf_info(pdf_path):
try:
with open(pdf_path, 'rb') as file:
pdf_reader = PdfReader(file)
page_count = len(pdf_reader.pages)
except Exception as e:
print(f"Error reading {pdf_path}: {e}")
page_count = None
return os.path.basename(pdf_path), pdf_path, page_count
def collect_pdf_info(directory, output_csv):
pdf_files = glob.glob(os.path.join(directory, '**', '*.pdf'), recursive=True)
with open(output_csv, mode='w', newline='', encoding='utf-8') as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['File Name', 'File Path', 'Page Count'])
with ThreadPoolExecutor() as executor:
futures = {executor.submit(get_pdf_info, pdf): pdf for pdf in pdf_files}
for future in as_completed(futures):
result = future.result()
if result:
csv_writer.writerow(result)
print(f"CSV file '{output_csv}' created successfully.")
directory = 'T:/AArete Client Work/Doczy-Production/Restricted/icertis_contracts'
output_csv = 'icertis/icertis_files.csv'
collect_pdf_info(directory, output_csv)