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

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

Recommend


More recommend