I am trying to build an app where I have to extract some data from pdf containing election roll data for the indian constituencies. I have attached a sample PDF. Below is the code I am running:-
data = []
current_page = np.array(pdf2image.convert_from_path('/home/spxlpt087/Downloads/New folder/2024-FC-EROLLGEN-S07-49-FinalRoll-Revision2-HIN-61-WI.pdf',
┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а first_page=3,
┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а last_page=3,
┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а dpi=300)[0])
sharpened_image = cv2.filter2D(current_page, -1, kernel_sharpening)
kernel = np.ones((1, 1), np.uint8)
img_dilation = cv2.dilate(sharpened_image, kernel, iterations=5)
gray_img = cv2.cvtColor(img_dilation, cv2.COLOR_BGR2GRAY)
thr = cv2.threshold(gray_img, 128, 255, cv2.THRESH_BINARY_INV)[1]
cnts = cv2.findContours(thr, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
contours_new = ()
cnts_tables = [cnt for cnt in cnts if cv2.contourArea(cnt) > 50000]
rects = sorted([cv2.boundingRect(cnt) for cnt in cnts_tables], key=lambda r: (r[1], r[0]))
for i_r, (x, y, w, h) in enumerate(rects, start=1):
┬а ┬а cell = current_page[y+1:y+h-1, x+1:x+w-1]
┬а ┬а text = pytesseract.image_to_string(
┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а cell,
┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а config='--oem 3 --psm 11', ┬а#--oem 1 --psm 3
┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а lang='Devanagari+eng',
┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а ┬а nice=1)
┬а ┬а text = text.replace('\f', '')
┬а ┬а text = text.replace('\n\n', '')
┬а ┬а print(text)
┬а ┬а data.append(text)
The data I am getting :-┬а
SOI0798389iрдирд╛рдо: рдЙрдШрд╛рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдордГ рдЬрдЧрджреАрд╢ рдЪрдВрджреНрд░~рдордХрд╛рди рдирдВ. : 001рдЖрдпреБ : 33 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
$011000827[|рдирд╛рдо : рд╕реБрд░реЗрд╢ рдХреБрдорд╛рд░рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд░рд╛рдЬрдмреАрд░~рдордХрд╛рди рдирдВ, : 01рдЖрдпреБ : 21 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
MXMI5749203рдирд╛рдо : рдЕрд╢реЛрдХ рдХреБрдорд╛рд░рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд░реБрдкрдЪрдиреНрджрдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдордХрд╛рди рдирдВ, : 79рдЖрдпреБ : 39 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
$011142009рдирд╛рдо : рдкреНрд░рдХрд╛рд╢ рдХреМрд░рдкрддрд┐ рдХрд╛ рдирд╛рдордГ рд░рд╛рдо рд▓реБрднрд╛рдпрд╛рдордХрд╛рди рдирдВ. : 10~рдЖрдпреБ : 49 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
[ 3]$011145184рдирд╛рдо : рдореЛрдирд┐рдХрд╛рдкрддрд┐ рдХрд╛ рдирд╛рдордГ рдзрд░реНрдорд╡реАрд░рдордХрд╛рди рдирдВ. : 11рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 27 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
$011146356рдирд╛рдо : рдЕрд░рд╕рд┐рдпрд╛рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд░рд╛рдЬрдХреБрдорд╛рд░рдордХрд╛рди рдирдВ. : 11рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдз рд╣реИрдЖрдпреБ : 18 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓
SOI07983637рдирд╛рдо : рд╕реБрдиреАрд▓рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдордГ рд░рд╛рдорджрд┐рдпрд╛~рдордХрд╛рди рдиреС. : 17рдЖрдпреБ : 24 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
$011146208[9рдирд╛рдо : рд╕реБрдордирдкрддрд┐ рдХрд╛ рдирд╛рдордГ рд╕реБрднрд╛рд╖рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдордХрд╛рди рдиреС. : 18рдЖрдпреБ : 31 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
$011146133|рдирд╛рдо : рд╕реБрднрд╛рд╖рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд░рд╛рдЬ рдХреБрдорд╛рд░~рдордХрд╛рди рдиреС. : 18рдЖрдпреБ : 33 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
| 10] 0$011141548рдирд╛рдо : рд╡реАрд░реЗрдВрджреНрд░рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд░рд╛рдордлрд▓рдордХрд╛рди рдирдВ. : 19~рдЖрдпреБ : 28 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
[dl 1$011146257рдирд╛рдо : рд░реЛрд╣рд┐рддрдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рджреАрдкрдХрдордХрд╛рди рдирдВ. : 19рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдВрдЖрдпреБ : 20 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
| 12$010958629рдирд╛рдо : рд╕реБрдордирдкрддрд┐ рдХрд╛ рдирд╛рдо: рд░рд╛рдорджрд┐рдпрд╛рдордХрд╛рди рдирдВ. : 34рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 33 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SO1092028013 |рдирд╛рдо : рд╡рдВрд╢реАрдХрд╛рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдордГ рдЬрд┐рддреЗрдВрджреНрд░~рдордХрд╛рди рдиреС. : 35рдЖрдпреБ : 22 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
$011145994рдирд╛рдо : рд╡реАрд░реЗрдиреНрджреНрд░рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд▓рдХреНрд╖реНрдордг рджрд╛рд╕~рдордХрд╛рди рдиреС. : 37рдЖрдпреБ : 29 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
| 15$011141563рдирд╛рдо : рд╕реЛрдиреА рдХреБрдорд╛рд░реАрдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд▓рдХреНрд╖реНрдордгрдордХрд╛рди рдиреС. : 37рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 21 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
$011143296[ 1a]рдирд╛рдо : рд╕рд╡рд┐рддрд╛рдкрддрд┐ рдХрд╛ рдирд╛рдордГ рдЬрдпрдмреАрд░рдордХрд╛рди рдирдВ. : 45~рдЖрдпреБ : 39 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
| 7]$011152537рдирд╛рдо : рдЬреНрдпреЛрддрд┐рдкрддрд┐ рдХрд╛ рдирд╛рдордГ рдкреНрд░рд╡реАрдирдордХрд╛рди рдирдВ. : 45~рдЖрдпреБ : 27 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
$011164177a)рдирд╛рдо : рд╕рдВрдЬрдпрдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд░рд╛рдорджрд┐рдпрд╛рдордХрд╛рди рдирдВ. : 50рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 22 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
19 |$011152560рдирд╛рдо: рдореАрдиреВрдкрддрд┐ рдХрд╛ рдирд╛рдордГ рд╕реЛрдиреВрдордХрд╛рди рдирдВ. : 52~рдЖрдпреБ : 24 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
$010562264рдирд╛рдо : рд╕реВрд░рдЬрдорд▓рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд░рд╛рдо рд╕рд░реВрдкрдордХрд╛рди рдирдВ. : 54~тАЬрдЖрдпреБ : 69 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
MXM1751585[ 21рдирд╛рдо : рдХрд╡рд┐рддрд╛рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рдкреНрд░рд╡реАрди рдХреБрдорд╛рд░рдордХрд╛рди рдирдВ. : 54/1рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 37 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
MXM1010024[ 2]рдирд╛рдо: рд░рд╛рдорд╛рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдордГ рдореЗрд╣рд░ рдЪрдиреНрджрдордХрд╛рди рдирдВ. : 55~рдЖрдпреБ : 67 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
MXM1009422| 23]рдирд╛рдо : рдореБрдиреАрд╢рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдордГ рд░рд╛рдорд╛рдордХрд╛рди рдирдВ. : 55~рдЖрдпреБ : 40 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
Ll$010959718рдирд╛рдо : рдкрд░рд╡реАрдирдкрддрд┐ рдХрд╛ рдирд╛рдордГ рд╕рддреАрд╢ рдХреБрдорд╛рд░рдордХрд╛рди рдирдВ, : 55рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 32 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
25]S010998013рдирд╛рдо : рд╕рддреАрд╢ рдХреБрдорд╛рд░рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рд░рд╛рдордордХрд╛рди рдирдВ. : 55~рдЖрдпреБ : 31 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
SOI0998054[ 2реи]рдирд╛рдо : рдХреБрд╕реБрдо рджреЗрд╡реАрдкрддрд┐ рдХрд╛ рдирд╛рдордГ рдореБрдиреАрд╢рдордХрд╛рди рдирдВ. : 55рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 24 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
тАФтАФ╦Ж╦Ж#227$011240217рдирд╛рдо : рд░рд╛рдЬрдХреБрдорд╛рд░рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдо: рдЪреСрджрдЧреАрдордХрд╛рди рдирдВ. : 56рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 73 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
HR/09/71/004262528]рдирд╛рдо : рдЬреАрд╡рдиреАрдкрддрд┐ рдХрд╛ рдирд╛рдордГ рд░рд╛рдЬ рдХреБрдорд╛рд░рдордХрд╛рди рдирдВ. : 56~рдЖрдпреБ : 69 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
HR/09/71/0042599[ 2] 29 |рдирд╛рдо: рдИрд╢реНрд╡рд░рдкрд┐рддрд╛ рдХрд╛ рдирд╛рдордГ рдорд╛рдВрдЧреЗ рд░рд╛рдо~рдордХрд╛рди рдирдВ. : 56рдЖрдпреБ : 65 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
| 30HR/09/71/0042600рдирд╛рдо : рдХрд┐рддрд╛рдмреЛрдкрддрд┐ рдХрд╛ рдирд╛рдордГ рдИрд╢реНрд╡рд░рдордХрд╛рди рдирдВ. : 56рдлреЛрдЯреЛ рдЙрдкрд▓рдмреНрдзрдЖрдпреБ : 64 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
So, I am abe to extract data from this text:-
SOI0798389 рдирд╛рдо: рдЙрдШрд╛ рдЖрдпреБ : 33 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SO000827 рдирд╛рдо : рд╕реБрд░реЗрд╢ рдХреБрдорд╛рд░ рдЖрдпреБ : 21 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
MXM1574920 рдирд╛рдо : рдЕрд╢реЛрдХ рдХреБрдорд╛рд░ рдЖрдпреБ : 39 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
OoN142009 рдирд╛рдо : рдкреНрд░рдХрд╛рд╢ рдХреМрд░ рдЖрдпреБ : 49 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SOo45184 рдирд╛рдо : рдореЛрдирд┐рдХрд╛ рдЖрдпреБ : 27 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
OIN46356 рдирд╛рдо : рдЕрд░рд╕реНрд░рд┐рдпрд╛ рдЖрдпреБ : 18 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SOI0798363 рдирд╛рдо : рд╕реБрдиреАрд▓ рдЖрдпреБ : 24 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
OIN46208 рдирд╛рдо : рд╕реБрдорди рдЖрдпреБ : 31 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SO46133 рдирд╛рдо: рд╕реБрднрд╛рд╖ рдЖрдпреБ : 33 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
SON41548 рдирд╛рдо : рд╡реАрд░реЗрдВрджреНрд░ рдЖрдпреБ : 28 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
SO46257 рдирд╛рдо : рд░реЛрд╣рд┐рдд рдЖрдпреБ : 20 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
SOI0958629 рдирд╛рдо : рд╕реБрдорди рдЖрдпреБ : 33 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SOI0 рдирд╛рдо : рд╡рдВрд╢реАрдХрд╛ рдЖрдпреБ : 22 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SON41563 рдирд╛рдо : рд╕реЛрдиреА рдХреБрдорд╛рд░реА рдЖрдпреБ : 21 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SO143296 рдирд╛рдо : рд╕рд╡рд┐рддрд╛ рдЖрдпреБ : 39 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SOI1152537 рдирд╛рдо : рдЬреНрдпреЛрддрд┐ рдЖрдпреБ : 27 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SON64177 рдирд╛рдо : рд╕рдВрдЬрдп рдЖрдпреБ : 22 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
INS2560 рдирд╛рдо: рдореАрдиреВ рдЖрдпреБ : 24 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SO0562264 рдирд╛рдо : рд╕реВрд░рдЬрдорд▓ рдЖрдпреБ : 69 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
MXM1751585 рдирд╛рдо : рдХрд╡рд┐рддрд╛ рдЖрдпреБ : 37 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
MXM1010024 рдирд╛рдо : рд░рд╛рдорд╛ рдЖрдпреБ : 67 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
MXM1009422 рдирд╛рдо : рдореБрдиреАрд╢ рдЖрдпреБ : 40 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
SOI0959718 рдирд╛рдо : рдкрд░рд╡реАрди рдЖрдпреБ : 32 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SOI0998013 рдирд╛рдо : рд╕рддреАрд╢ рдХреБрдорд╛рд░ рдЖрдпреБ : 31 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
SOI0998054 рдирд╛рдо : рдХреБрд╕реБрдо рджреЗрд╡реА рдЖрдпреБ : 24 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
SOI240217 рдирд╛рдо: рд░рд╛рдЬрдХреБрдорд╛рд░ рдЖрдпреБ : 73 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
HR/ рдирд╛рдо : рдЬреАрд╡рдиреА рдЖрдпреБ : 69 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
HR/ рдирд╛рдо: рдИрд╢реНрд╡рд░ рдЖрдпреБ : 65 рд▓рд┐рдВрдЧ : рдкреБрд░реБрд╖
HR/ рдирд╛рдо : рдХрд┐рддрд╛рдмреЛ рдЖрдпреБ : 64 рд▓рд┐рдВрдЧ : рдорд╣рд┐рд▓рд╛
but I am having problem with the voter number as tesseract sometime considering the character as %. Also, I have 10000+ pdf in same format can anyone how can I fast this process as this is taking too much time approx 10 minutes for 1 pdf.
Thanks!