/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . google . example . ml kit . kotlin Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . ml kit . vision . common . Input Image Ċ import Ġcom . google . ml kit . vision . text . Text Ċ import Ġcom . google . ml kit . vision . text . Text Recognition Ċ import Ġcom . google . ml kit . vision . text . Text Recognizer Ċ Ċ class ĠText Recognition Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġrecognize Text ( image : ĠInput Image ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġget _ detector _ default ] ĊĠĠĠĠĠĠĠ Ġval Ġre cognizer Ġ= ĠText Recognition . getClient () ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġget _ detector _ default ] ĊĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġrun _ detector ] ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġre cognizer . process ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġvision Text Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTask Ġcompleted Ġsuccessfully ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ START _ EXCL UDE ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġget _ text ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Ġin Ġvision Text . text Blocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounding Box Ġ= Ġblock . bounding Box ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcorner Points Ġ= Ġblock . corner Points ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġblock . text ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġblock . lines ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġline . elements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġget _ text ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ END _ EXCL UDE ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTask Ġfailed Ġwith Ġan Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġrun _ detector ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess TextBlock ( result : ĠText ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġml kit _ process _ text _ block ] ĊĠĠĠĠĠĠĠ Ġval Ġresult Text Ġ= Ġresult . text ĊĠĠĠĠĠĠĠ Ġfor Ġ( block Ġin Ġresult . text Blocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Text Ġ= Ġblock . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Corner Points Ġ= Ġblock . corner Points ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Frame Ġ= Ġblock . bounding Box ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġblock . lines ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Text Ġ= Ġline . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Corner Points Ġ= Ġline . corner Points ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Frame Ġ= Ġline . bounding Box ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġline . elements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Text Ġ= Ġelement . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Corner Points Ġ= Ġelement . corner Points ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Frame Ġ= Ġelement . bounding Box ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġml kit _ process _ text _ block ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetText Recognizer (): ĠText Recognizer Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġml kit _ local _ doc _ re cognizer ] ĊĠĠĠĠĠĠĠ Ġreturn ĠText Recognition . getClient () ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġml kit _ local _ doc _ re cognizer ] ĊĠĠĠ Ġ} Ċ } Ċ