Package: thai-personal-card-extract
ThaiPersonalCardExtractLibrary for extract infomation from thai personal identity card. imprement from easyocr and tesseractNew Feature v1.3.5 🎁Support Base64 input parameter for image object for all class. (14 Sep. 2021)Support Thai identity card laser code extract. (02 Sep. 2021)Fix bug dataset folder not import thai_government_lottery resource. (23 Aug. 2021)#1Increase performance.Support Thai Government Lottery สกัดข้อมูลจากลอตเตอร์รี่ ใช้ได้ดีกับรูปภาพที่ได้จากเครื่องแสกน (16 Aug. 2021)Refactor Output Structure.Support Thai Driving License (Beta) สามารถสกัดข้อมูลจากภาพถ่ายใบขับขี่ได้บางรูปแบบ เนื่องจาก กรมทางขนส่งทางบก มีรูปแบบบัตรหลากหลายรูปแบบ และแต่ละรูปแบบมีตำแหน่งข้อมูลที่แตกต่างกัน จึงทำให้ประสิทธิภาพต่ำExample for new feature.fromThaiPersonalCardExtractimportPersonalCardreader=PersonalCard(lang="mix",tesseract_cmd="D:/Program Files/Tesseract-OCR/tesseract")# for windows need to pass tesseract_cmd parameter to setup your tesseract command path.# สำหรับตรวจจับภาพด้านหน้าบัตรresult=reader.extract_front_info("../examples/card1.jpg")print(result)# หรือหากต้องการส่งไฟล์ภาพเป็น ข้อมูลแบบเข้ารหัส base64 สามารถทำได้ดังนี้# สามารถส่งข้อมูลแบบ base64 แทนการส่งที่อยู่ไฟล์แบบเดิมได้ในทุก classresult=reader.extract_front_info("/9j/4AAQSkZJRgABAQEAeAB4AA....")print(result)# และด้านหลังบัตรresult=reader.extract_back_info("../examples/card5.jpg")print(result)ExamplesExample image file.wrapPerpective image crop.keypoint of image detected.Resutls of library extract region of interestIdentification NumberFullNameTHNameENLastNameENBirthdayTHBirthdayENReligionAddressDateOfIssueTHDateOfIssueENDateOfExpiryTHDateOfExpiryENLaserCodeRecommend ⚠Image quality lowest should be 600x350Images with minimal reflections should be used. for good resultsIdentity Card should be size in the image about 75%, if the image doesn't cropped that to be left only Identity Card  area.For faster, please resize image and usage CUDA GPU.InstallationInstall usingpipfor stable release,pipinstallthai-personal-card-extractFor latest development release,pipinstallgit+git://github.com/ggafiled/ThaiPersonalCardExtrac.gitNote 1:for Windows, please install tesseract first by following the official instruction herehttps://medium.com/@navapat.tpb/734dae2fb4d3On medium website, be sure to setup already.Note 2:for Linux os, please install tesseract by following the official instructionhttps://github.com/tesseract-ocr/tesseractUsage# With build-in Config Options. For extractInfo function please use  <= v1.3.3importThaiPersonalCardExtractascardreader=card.PersonalCard(lang=card.THAI,provider=card.DEFAULT,tesseract_cmd="D:/Program Files/Tesseract-OCR/tesseract",save_extract_result=True,path_to_save="D:/dev/ThaiPersonalCardExtract/examples/extract")result=reader.extractInfo('examples/card.jpg')print(result)# With free-style ตัวอย่างการเรียกใช้งานคลาส PersonalCard เพื่อสกัดข้อมูลบัตรประจำตัวประชาชน For extractInfo function please use  <= v1.3.3fromThaiPersonalCardExtractimportPersonalCardreader=PersonalCard(lang="mix",tesseract_cmd="D:/Program Files/Tesseract-OCR/tesseract")# for windows need to pass tesseract_cmd parameter to setup your tesseract command path.result=reader.extractInfo('examples/card.jpg')print(result)# With free-style ตัวอย่างการเรียกใช้งานคลาส DrivingLicense เพื่อสกัดข้อมูลใบอนุญาตขับขี่fromThaiPersonalCardExtractimportDrivingLicensereader=DrivingLicense(lang="mix",tesseract_cmd="D:/Program Files/Tesseract-OCR/tesseract")# for windows need to pass tesseract_cmd parameter to setup your tesseract command path.result=reader.extractInfo('examples/card.jpg')print(result)# With free-style ตัวอย่างการเรียกใช้งานคลาส ThaiGovernmentLottery เพื่อสกัดข้อมูลลอตเตอร์รี่fromThaiPersonalCardExtractimportThaiGovernmentLotteryreader=ThaiGovernmentLottery(save_extract_result=True,path_to_save="D:/dev/ThaiPersonalCardExtract/examples/extract/thai_government_lottery")# for windows need to pass tesseract_cmd parameter to setup your tesseract command path.result=reader.extractInfo("../examples/card7.jpg")print(result)Output will be in list format, each item represents result of library can extract, respectively. type of namedtuple
ผลลัพธ์ที่ได้จะเป็นประเภทnamedtupleสามารถศึกษาเพิ่มเติมเพื่อใช้งานได้จากที่นี่คลิก#Output of PersonalCardCard(Identification_Number='9999999999999',FullNameTH='นาย อายุมฺมุราเสะ',PrefixTH='นาย',NameTH='อายุมฺมุราเสะ',LastNameTH='อายุมฺมุราเสะ',PrefixEN='.Mr.Shoyo',NameEN='',LastNameEN='Hinatao',BirthdayTH='21 มี.ย. 2539',BirthdayEN='21 Jun..1996',Religion='พุทธ',Address='ท8ปฺ` 99/1 มิซีโฮะ เขตฮานามิกาวา อำเภอชิบ',DateOfIssueTH='11 ส.ค. 2554',DateOfIssueEN='11 Ang. 2021',DateOfExpiryTH='11 ส.ค. 2574',DateOfExpiryEN='11 Aug. 2031,')#Output of DrivingLicenseCard(License_Number='98765432',IssueDateTH='ผังทาทม',ExpiryDateTH='',IssueDateEN='14 August 2664',ExpiryDateEN='14 August 2574',NameTH='า? โนบกะ โนบี',NameEN='MRONOREAUMANE',BirthDayTH='',BirthDayEN='wa hs OKRA',Identity_Number='',Province='นคาราชศีมา')#Output of ThaiGovernmentLotteryLottery(LotteryNumber='424603',LessonNumber='08',SetNumber='23',Year='2564')#type namedtupleสามารถเข้าถึงตัวแปรได้ตามรูปแบบนี้print(result.LotteryNumber)print(result.LessonNumber)print(result.SetNumber)print(result.Year)For setlangattribute tothaFor extractInfo function please use  <= v1.3.3fromThaiPersonalCardExtractimportPersonalCardreader=PersonalCard(lang="tha",tesseract_cmd="D:/Program Files/Tesseract-OCR/tesseract")# for windows need to pass tesseract_cmd parameter to setup your tesseract command path.result=reader.extractInfo('examples/card.jpg')print(result)Output will be in list format, each item represents result of library can extract, respectively.{"Identification_Number":"9999999999999","FullNameTH":"นาย อายุมฺมุราเสะ","PrefixTH":"นาย","NameTH":"อายุมฺมุราเสะ","LastNameTH":"อายุมฺมุราเสะ","BirthdayTH":"21 มี.ย. 2539","Religion":"พุทธ","Address":"ท๒ 99/1 มิชีโฮะ เขตฮานามิกาวา อำเภอชิบ;","DateOfIssueTH":"11 ส.ค. 2554","DateOfExpiryTH":"11 ส.ค. 2574"}And you can set ocr provider following belowdefault  #used both easyocr and tesseract **RecommendOreasyocrOrtesseractfromThaiPersonalCardExtractimportPersonalCard# For extractInfo function please use  <= v1.3.3reader=PersonalCard(lang="tha",provider="default",tesseract_cmd="D:/Program Files/Tesseract-OCR/tesseract")# for windows need to pass tesseract_cmd parameter to setup your tesseract command path.result=reader.extractInfo('examples/card.jpg')print(result)Config Optionsyou can set options to Instance by below keywordParameter nameValue TypeExamplelangStringExpected Results Languagebash mix  #get all area both tha and engOrbash thaOrbash eng*Default is 'mix'สำหรับ DrivingLicense, PersonalCardproviderStringOCR Provider havebash default  #used both easyocr and tesseract **RecommendOrbash easyocrOrbash tesseract*Default is 'default'สำหรับ DrivingLicense, PersonalCardtemplate_thresholdDoubleRate to cals similarity of template *Default is 0.7sift_rateIntFeature Keypoint rate *Default is 25,000tesseract_cmdStringPath of your tesseract command **For windows only.save_extract_resultBooleanSet True if you want to save extracted image *Default is Falsepath_to_saveStringPath that you given it save extracted image, relative with save_extract_result=TrueDonate Me ☕Mr.Nattapol Krobklang