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-ն է, և այս մոտեցումն օգնում է մարդկանց դրանք փոխարկել տեքստային ֆայլի: