Python – ընթերցում է PDF-ի բովանդակությունը՝ օգտագործելով OCR (օպտիկական նիշերի ճանաչում)


PDF-ն նշանակում է դյուրակիր փաստաթղթի ձևաչափ և ֆայլի հայտնի ձևաչափերից մեկն է, որը կարելի է փոխանակել սարքերի միջև: Քանի որ PDF ձևաչափով ֆայլերը պահում են տեքստը, որը հնարավոր չէ փոխել: Այն օգտվողին տալիս է ավելի հեշտ ընթեռնելիություն և կայունություն ֆայլերի ձևաչափով: Թեև PDF ձևաչափով տեքստը կարդալն ավելի հեշտ է, բայց դրանից բովանդակությունը պատճենելիս կարող է ժամանակատար լինել: Ընթերցանության գործընթացը հեշտացնելու համար օգտագործվում է OCR (Optical Character Recognition) գործիքը:

PDF-ի բովանդակության ընթերցում OCR-ի միջոցով

Այս հոդվածում մենք պատրաստվում ենք զբաղվել օպտիկական նիշերի ճանաչման կամ OCR-ի հետ, որը էլեկտրոնային գործիք է, որն օգնում է սկանավորված պատկերները կամ ձեռագիր տեքստը վերածել խմբագրվող համակարգչային ֆայլերի: Python-ն աջակցում է մի քանի երրորդ կողմի գրադարանների, որոնք օգտագործում են OCR տեխնոլոգիան՝ PDF-ներից բովանդակություն կարդալու համար:

Նման գրադարաններից մեկը Pytesseract-ն է: Դա Python-ի համար օպտիկական նիշերի ճանաչման (OCR) շարժիչ է, որն օգտագործում է Google-ի Tesseract-OCR-ը գլխարկի տակ: Pytesseract-ը կարող է նույնականացնել տեքստը PDF ֆայլերում ավելի քան 100 լեզուներով, այդ թվում՝ անգլերեն, հինդի, արաբերեն և չինարեն, ի թիվս այլոց:

Օպտիկական բնույթի ճանաչում:

OCR տեխնոլոգիան վերացնում է փաստաթղթերի ձեռքով ընթերցումը և խնայում է ժամանակը: Դրա կիրառությունները չեն սահմանափակվում միայն փաստաթղթերի արդյունահանմամբ, այլ նաև տարածվում են ձեռագրի ճանաչման, նույնականացման քարտի ճանաչման և ինքնության հաստատման վրա: Եզրափակելով, OCR-ն այն գործիքներից մեկն է, որին յուրաքանչյուր ծրագրավորող պետք է ծանոթանա՝ հաշվի առնելով դրա օգտագործման տարբեր դեպքերը պատկերների կամ pdf փաստաթղթերի հետ գործ ունենալիս:

Python-ը տրամադրում է ճկունություն, որն անհրաժեշտ է կոմերցիոն հասանելի բազմաթիվ OCR գրադարանների հետ արդյունավետ փոխազդելու համար, ինչպիսին է pytesseract-ը, որպեսզի մեր նախագծերն աշխատեն ավելի պարզ՝ դրանք մեծացնելով տվյալների մեծ հավաքածուներում՝ առանց մարդկային փոխազդեցություն պահանջելու: Երբ մենք համատեղում ենք այս հզորությունը մեքենայական ուսուցման տարբեր հասկացությունների հետ, ինչպիսիք են բնական լեզվի մշակումը (NLP) և օբյեկտների հայտնաբերումը, սահմանափակում չկա, թե որքանով կարող ենք հաղթահարել համակարգչի ծրագրային մատուցման հնարավորությունների սահմանները:

Python ծրագիր՝ PDF-ի բովանդակությունը կարդալու համար OCR-ի միջոցով try and բացի մեթոդով

Մուտքը տրվում է PDF ձևաչափով և անվանվում sample.pdf, այնուհետև օգտագործելով Optical Character Recognition գործիքը; այն ճանաչում է PDF ֆայլի տեքստը և վերջապես վերադարձնում է նմուշի տեքստը: Դա անելու համար օգտագործվում է փորձել և բացի մեթոդը:

Ալգորիթմ

  • Քայլ 1 - Ներմուծեք պահանջվող մոդուլները, ինչպիսիք են os-ը և pytesseract-ը:

  • Քայլ 2 - Պատկերի մոդուլը ներմուծված է PIL փաթեթից

  • Քայլ 3 − Տրված pdf ֆայլերը վերածվում են պատկերների՝ օգտագործելով «convert_from_path» անունը

  • Քայլ 4 − Ֆունկցիան սահմանվում է մեկ պարամետրով՝ որպես մուտքային ֆայլի անուն:

  • Քայլ 5 - Դատարկ ցուցակը սկզբնավորվում է

  • Քայլ 6 - Փորձի մեթոդը PDF ֆայլի յուրաքանչյուր տեքստ կվերածի տեքստի:

  • Քայլ 7 - Պատկերների ցանկի յուրաքանչյուր պատկերի համար ստեղծեք ֆայլի անուն յուրաքանչյուր պատկերի համար և պահեք այն JPEG ձևաչափով:

  • Քայլ 8 - Տեքստը արդյունահանվում է pytesseract մոդուլի միջոցով, այնուհետև այն ավելացվում է գործարկված դատարկ ցուցակին:

  • Քայլ 9 - Եթե վերը նշված քայլերը կատարելիս որևէ բացառություն կա, տպեք այն:

  • Քայլ 10 − Ստեղծեք ելքային ֆայլի անուն՝ հեռացնելով ընդլայնումը մուտքային ֆայլի անունից և ավելացնելով .txt ընդլայնումը:

  • Քայլ 11 - Գրեք արդյունահանված տեքստը ելքային ֆայլում և վերադարձրեք ելքային ֆայլի անունը:

  • Քայլ 12 - Սահմանեք pdf_file փոփոխականը մուտքագրված ֆայլի անունով:

  • Քայլ 13 - Կանչեք read_pdf ֆունկցիան pdf_file փոփոխականով որպես մուտքագրում և տպեք դրա ելքը:

Օրինակ

# Importing the os module to perform file operations
import os  
# Importing the pytesseract module to extract text from images
import pytesseract as tess  
# Importing the Image module from the PIL package to work with images
from PIL import Image  
# Importing the convert_from_path function from the pdf2image module to convert PDF files to images
from pdf2image import convert_from_path  

#This function takes a PDF file name as input and returns the name of the text file that contains the extracted text.
def read_pdf(file_name):   
    # Store all pages of one file here:
    pages = []

    try:
        # Convert the PDF file to a list of PIL images:
        images = convert_from_path(file_name)  

        # Extract text from each image:
        for i, image in enumerate(images):
          # Generating filename for each image
            filename = "page_" + str(i) + "_" + os.path.basename(file_name) + ".jpeg"  
            image.save(filename, "JPEG")  
          # Saving each image as JPEG
            text = tess.image_to_string(Image.open(filename))  # Extracting text from each image using pytesseract
            pages.append(text)  
          # Appending extracted text to pages list

    except Exception as e:
        print(str(e))

    # Write the extracted text to a file:
    output_file_name = os.path.splitext(file_name)[0] + ".txt"  # Generating output file name
    with open(output_file_name, "w") as f:
        f.write("\n".join(pages))  
      # Writing extracted text to output file

    return output_file_name

#print function returns the final converted text 
pdf_file = "sample.pdf"
print(read_pdf(pdf_file))

Մուտքագրում

Արդյունք

Եզրակացություն

21-րդ դարում տվյալների մշակումն ամենադժվար խնդիրն է տվյալների մեծ ծավալ ունեցող կազմակերպությունների համար, և տվյալների գիտության և մեքենայական ուսուցման զարգացման շնորհիվ այն դարձել է ավելի հեշտ հասանելի: Ֆայլը, որն առավել նախընտրելի է փոխանցել առանց որևէ փոփոխության, pdf-ն է, և այս մոտեցումն օգնում է մարդկանց դրանք փոխարկել տեքստային ֆայլի: