u s i n g m o b i l e c o m p o n e n t s t o f o o l p r
play

U S I N G M O B I L E C O M P O N E N T S T O F O O L - P R O O F - PowerPoint PPT Presentation

U S I N G M O B I L E C O M P O N E N T S T O F O O L - P R O O F T H E O C R E X P E R I E N C E K R I S T I N A T H A I I O S S O F T WA R E E N G I N E E R @ K R I S T I N A T H A I K R I S T I N A T H A I M O B I L E C O M P O N


  1. U S I N G M O B I L E C O M P O N E N T S T O F O O L - P R O O F T H E O C R E X P E R I E N C E K R I S T I N A T H A I I O S S O F T WA R E E N G I N E E R @ K R I S T I N A T H A I

  2. K R I S T I N A T H A I

  3. M O B I L E C O M P O N E N T S

  4. M i n t Q u i c k B o o k s P a y ro l l

  5. M O B I L E C O M P O N E N T S I m a g e P ro d u c t D o c u m e n t P I N C a p t u re S u r v e y R e v i e w

  6. F O O L - P R O O F I N G O C R

  7. W H AT I S O C R ?

  8. E N D - T O - E N D O C R F L O W I M A G E D ATA D O C U M E N T C A P T U R E E X T R A C T I O N R E V I E W C O M P O N E N T E N G I N E C O M P O N E N T

  9. D E M O

  10. T H E I M A G E C A P T U R E E X P E R I E N C E I M A G E D O C U M E N T D ATA C A P T U R E R E V I E W E X T R A C T I O N C O M P O N E N T C O M P O N E N T E N G I N E

  11. P e o p l e t a k e t e r r i b l e p i c t u re s .

  12. T I LT / S K E W

  13. N O T E N O U G H L I G H T I N G

  14. B L U R R I N E S S / S H A K I N G

  15. E D G E D E T E C T I O N

  16. D O C U M E N T D E T E C T I O N self.documentDetector ¡= ¡[CIDetector ¡detectorOfType:CIDetectorTypeRectangle ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡context:nil ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡options:nil]; NSArray ¡*rectFeaturesArray ¡=[_documentDetector ¡ featuresInImage:ciImage ¡ ¡ :@{CIDetectorAspectRatio:@2.0}]; ¡ NSDictionary ¡*documentCorners ¡= ¡[self ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ getDocumentCornersForFeatures:rectFeaturesArray ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡forVideoBox:clap ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡srcImage:ciImage]; ¡

  17. D E T E C T C O R N E R S for ¡(CIRectangleFeature ¡*f ¡in ¡rectFeaturesArray) ¡ ¡ { ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡CGPoint ¡markerPos ¡= ¡CGPointZero; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡//topLeft ¡ ¡ ¡markerPos ¡= ¡f.topLeft; ¡ ¡ ¡//flip ¡the ¡coordinates ¡ ¡ ¡markerPos ¡= ¡CGPointApplyAffineTransform(markerPos, ¡flipTx); ¡ ¡ ¡//apply ¡correction-­‑for-­‑orientation-­‑transform ¡ ¡markerPos ¡= ¡CGPointApplyAffineTransform(markerPos, ¡ ¡ ¡ ¡ ¡ ¡correctionTransform); ¡ ¡ ¡//scale ¡to ¡screen-­‑coordinates ¡ ¡ ¡markerPos ¡= ¡CGPointMake(markerPos.x ¡* ¡xScale, ¡markerPos.y ¡* ¡yScale); ¡ ¡ ¡topLeft ¡= ¡markerPos; ¡ ¡… ¡… ¡… ¡ } ¡

  18. Users follow instructions in creative ways…

  19. D ATA F R O M T H E D ATA E X T R A C T I O N E N G I N E I M A G E D ATA D O C U M E N T C A P T U R E E X T R A C T I O N R E V I E W C O M P O N E N T E N G I N E C O M P O N E N T

  20. C O N F I D E N C E A N D C O O R D I N AT E S <employeeSsn> ¡ ¡ ¡ ¡<ns2:confidence>0.5</ns2:confidence> ¡ ¡ ¡ ¡<ns2:bottom>75</ns2:bottom> ¡ ¡ ¡ ¡<ns2:left>289</ns2:left> ¡ ¡ ¡ ¡<ns2:right>392</ns2:right> ¡ ¡ ¡ ¡<ns2:top>60</ns2:top> ¡ </employeeSsn> ¡ <employerEin> ¡ ¡ ¡ ¡ ¡<ns2:confidence>1.0</ns2:confidence> ¡ ¡ ¡ ¡ ¡<ns2:bottom>122</ns2:bottom> ¡ ¡ ¡ ¡ ¡<ns2:left>61</ns2:left> ¡ ¡ ¡ ¡ ¡<ns2:right>157</ns2:right> ¡ ¡ ¡ ¡ ¡<ns2:top>108</ns2:top> ¡ </employerEin>

  21. D O C U M E N T D ATA <?xml ¡version="1.0" ¡encoding="UTF-­‑8" ¡standalone="yes"?> ¡ <FdpW2 ¡xmlns="http://schema.intuit.com/platform/document/semantic/v1" ¡ xmlns:ns2="http://schema.intuit.com/platform/document/common/v1"> ¡ ¡ ¡ ¡ ¡<taxYear>2013</taxYear> ¡ ¡ ¡ ¡ ¡<employeeSsn>333-­‑44-­‑5555</employeeSsn> ¡ ¡ ¡ ¡ ¡<employerEin>00-­‑7904153</employerEin> ¡ ¡ ¡ ¡ ¡<EmployerName> ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡<ns2:BusinessNameLine1>Rock ¡Castle ¡Construction, ¡Inc.</ ns2:BusinessNameLine1> ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡<ns2:BusinessNameLine2>Construction ¡and ¡Estimates</ns2:BusinessNameLine2> ¡ ¡ ¡ ¡ ¡</EmployerName> ¡ ¡ ¡ ¡ ¡<EmployerUSAddress> ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡<ns2:AddressLine1>1735 ¡County ¡Road</ns2:AddressLine1> ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡<ns2:City>Bayshore</ns2:City> ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡<ns2:State>CA</ns2:State> ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡<ns2:ZIPCode>94326</ns2:ZIPCode> ¡ ¡ ¡ ¡ ¡</EmployerUSAddress>

  22. B U I L D I N G T H E R E V I E W C O M P O N E N T I M A G E D ATA D O C U M E N T C A P T U R E E X T R A C T I O N R E V I E W C O M P O N E N T E N G I N E C O M P O N E N T

  23. C O N F I D E N C E <employeeSsn> ¡ ¡ ¡ ¡<ns2:confidence>0.5</ns2:confidence> ¡ </employeeSsn>

  24. C O N F I D E N C E <employeeSsn> ¡ ¡ ¡ ¡<ns2:confidence>1.0</ns2:confidence> ¡ </employeeSsn>

  25. I M A G E P O S I T I O N Z O O M I N G <payerName> ¡ ¡ ¡<ns2:bottom>75</ns2:bottom> ¡ ¡ ¡ ¡<ns2:left>289</ns2:left> ¡ ¡ ¡ ¡<ns2:right>392</ns2:right> ¡ ¡ ¡ ¡<ns2:top>60</ns2:top> ¡ </payerName>

  26. M A P P I N G T H E C O N T E N T T O T H E U I

  27. Box Title Box ID a Employee’s social security number 123-45-6789 Box Data

  28. G E N E R I C S I N G L E L I N E U I { ¡ ¡ ¡ ¡ ¡"DrHeaderId": ¡"a", ¡ ¡ ¡ ¡ ¡"DrBoxCellType": ¡1, ¡ ¡ ¡ ¡ ¡"DrBoxCellReuseId": ¡"DRW2SingleLineCell", ¡ ¡ ¡ ¡ ¡"DrBoxEditCellReuseId": ¡"DRW2SingleLineCell_Edit", ¡ ¡ ¡ ¡ ¡"DrHeaderTitle": ¡"Employee's ¡social ¡security ¡number", ¡ ¡ ¡ ¡ ¡"DrBoxUserApproved": ¡false, ¡ ¡ ¡ ¡ ¡"DrUIElements": ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"DrValue1": ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"DrXPath": ¡"//ns1:FdpW2/ns1:employeeSsn", ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"DrIsMandatory": ¡true, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"DrRegex": ¡"^\\d{3}-­‑\\d{2}-­‑\\d{4}$|^\\d{9}$", ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡"DrRegexFailMessage": ¡"Please ¡enter ¡a ¡valid ¡SSN ¡(9 ¡numbers)" ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡} ¡ } ¡

  29. -­‑(BOOL)validateInputInTextField:(UITextField*)textField ¡ { ¡ BOOL ¡isInputValid ¡= ¡[super ¡ ¡ validateInputInTextField:textField]; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡NSDictionary* ¡validationDictForThisTF ¡= ¡ ¡ self.inputValidationDictionaryForAllTextFields[@(textField.tag)]; ¡ ¡ ¡ ¡ ¡if ¡(!isInputValid) ¡{ ¡ self.valueTFErrorLabel.text ¡= ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ validationDictForThisTF[kDrRegexFailMessage]; ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡isInputValid; ¡ ¡ ¡ ¡ ¡ } ¡

  30. P R O S A N D C O N S

  31. P R O S A N D C O N S O F T H E G E N E R I C M O D E L ? Build once, Longer Maintaining Open source Expertise support many development generic model model time

  32. I N T U I T ’ S O P E N S O U R C E M O B I L E L I B R A R I E S

  33. Makes it easy to An Objective-C Makes it easy to get build advanced and Swift the device's current custom animations collection for iOS location on iOS on iOS and OS X that stores objects grouped into sections

  34. G I T H U B . C O M / I N T U I T

  35. T H A N K S ! @kristinathai kristina_thai@intuit.com

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend