├── .gitattributes ├── .gitignore ├── Droid ├── Assets │ └── AboutAssets.txt ├── MainActivity.cs ├── OCRDemo.Android.csproj ├── Properties │ ├── AndroidManifest.xml │ └── AssemblyInfo.cs ├── Resources │ ├── AboutResources.txt │ ├── Resource.designer.cs │ ├── drawable-hdpi │ │ └── icon.png │ ├── drawable-xhdpi │ │ └── icon.png │ ├── drawable-xxhdpi │ │ └── icon.png │ ├── drawable │ │ └── icon.png │ ├── layout │ │ ├── tabs.axml │ │ └── toolbar.axml │ ├── values-v21 │ │ └── style.xml │ └── values │ │ ├── colors.xml │ │ └── style.xml ├── app.config └── packages.config ├── LICENSE ├── OCRDemo.sln ├── OCRDemo ├── App.xaml ├── App.xaml.cs ├── OCRDemo.csproj ├── OCRItemsDataPage.xaml ├── OCRItemsDataPage.xaml.cs ├── Properties │ └── AssemblyInfo.cs ├── app.config └── packages.config ├── README.md ├── Screenshots └── demo.png └── iOS ├── AppDelegate.cs ├── Entitlements.plist ├── Info.plist ├── Main.cs ├── OCRDemo.iOS.csproj ├── Resources ├── Images.xcassets │ └── AppIcons.appiconset │ │ └── Contents.json └── LaunchScreen.xib ├── app.config └── packages.config /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | *.userprefs 19 | 20 | # External tool builders 21 | .externalToolBuilders/ 22 | 23 | # Locally stored "Eclipse launch configurations" 24 | *.launch 25 | 26 | # CDT-specific 27 | .cproject 28 | 29 | # PDT-specific 30 | .buildpath 31 | 32 | 33 | ################# 34 | ## Visual Studio 35 | ################# 36 | 37 | ## Ignore Visual Studio temporary files, build results, and 38 | ## files generated by popular Visual Studio add-ons. 39 | 40 | # User-specific files 41 | *.suo 42 | *.user 43 | *.sln.docstates 44 | .vs/ 45 | 46 | # Build results 47 | 48 | [Dd]ebug/ 49 | [Rr]elease/ 50 | x64/ 51 | build/ 52 | [Bb]in/ 53 | [Oo]bj/ 54 | [Cc]omponents/ 55 | [Pp]ackages/ 56 | 57 | # MSTest test Results 58 | [Tt]est[Rr]esult*/ 59 | [Bb]uild[Ll]og.* 60 | 61 | *_i.c 62 | *_p.c 63 | *.ilk 64 | *.meta 65 | *.obj 66 | *.pch 67 | *.pdb 68 | *.pgc 69 | *.pgd 70 | *.rsp 71 | *.sbr 72 | *.tlb 73 | *.tli 74 | *.tlh 75 | *.tmp 76 | *.tmp_proj 77 | *.log 78 | *.vspscc 79 | *.vssscc 80 | .builds 81 | *.pidb 82 | *.log 83 | *.scc 84 | 85 | # Visual C++ cache files 86 | ipch/ 87 | *.aps 88 | *.ncb 89 | *.opensdf 90 | *.sdf 91 | *.cachefile 92 | 93 | # Visual Studio profiler 94 | *.psess 95 | *.vsp 96 | *.vspx 97 | 98 | # Guidance Automation Toolkit 99 | *.gpState 100 | 101 | # ReSharper is a .NET coding add-in 102 | _ReSharper*/ 103 | *.[Rr]e[Ss]harper 104 | 105 | # TeamCity is a build add-in 106 | _TeamCity* 107 | 108 | # DotCover is a Code Coverage Tool 109 | *.dotCover 110 | 111 | # NCrunch 112 | *.ncrunch* 113 | .*crunch*.local.xml 114 | 115 | # Installshield output folder 116 | [Ee]xpress/ 117 | 118 | # DocProject is a documentation generator add-in 119 | DocProject/buildhelp/ 120 | DocProject/Help/*.HxT 121 | DocProject/Help/*.HxC 122 | DocProject/Help/*.hhc 123 | DocProject/Help/*.hhk 124 | DocProject/Help/*.hhp 125 | DocProject/Help/Html2 126 | DocProject/Help/html 127 | 128 | # Click-Once directory 129 | publish/ 130 | 131 | # Publish Web Output 132 | *.Publish.xml 133 | *.pubxml 134 | 135 | # NuGet Packages Directory 136 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 137 | #packages/ 138 | 139 | # Windows Azure Build Output 140 | csx 141 | *.build.csdef 142 | 143 | # Windows Store app package directory 144 | AppPackages/ 145 | 146 | # Others 147 | sql/ 148 | *.Cache 149 | ClientBin/ 150 | [Ss]tyle[Cc]op.* 151 | ~$* 152 | *~ 153 | *.dbmdl 154 | *.[Pp]ublish.xml 155 | *.pfx 156 | *.publishsettings 157 | 158 | # RIA/Silverlight projects 159 | Generated_Code/ 160 | 161 | # Backup & report files from converting an old project file to a newer 162 | # Visual Studio version. Backup files are not needed, because we have git ;-) 163 | _UpgradeReport_Files/ 164 | Backup*/ 165 | UpgradeLog*.XML 166 | UpgradeLog*.htm 167 | 168 | # SQL Server files 169 | App_Data/*.mdf 170 | App_Data/*.ldf 171 | 172 | ############# 173 | ## Windows detritus 174 | ############# 175 | 176 | # Windows image file caches 177 | Thumbs.db 178 | ehthumbs.db 179 | 180 | # Folder config file 181 | Desktop.ini 182 | 183 | # Recycle Bin used on file shares 184 | $RECYCLE.BIN/ 185 | 186 | # Mac crap 187 | .DS_Store 188 | 189 | ############# 190 | Git 191 | ############# 192 | 193 | *.orig 194 | 195 | ############# 196 | ## Python 197 | ############# 198 | 199 | *.py[co] 200 | 201 | # Packages 202 | *.egg 203 | *.egg-info 204 | dist/ 205 | build/ 206 | eggs/ 207 | parts/ 208 | var/ 209 | sdist/ 210 | develop-eggs/ 211 | .installed.cfg 212 | 213 | # Installer logs 214 | pip-log.txt 215 | 216 | # Unit test / coverage reports 217 | .coverage 218 | .tox 219 | 220 | #Translations 221 | *.mo 222 | 223 | #Mr Developer 224 | .mr.developer.cfg 225 | 226 | XamarinEvolve.userprefs 227 | XamarinEvolve/XamarinEvolve.Backend/App_Data/aspnet-XamarinEvolve.Backend-20151029080950.mdf 228 | *.ldf 229 | -------------------------------------------------------------------------------- /Droid/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with your package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /Droid/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using Android.App; 4 | using Android.Content; 5 | using Android.Content.PM; 6 | using Android.Runtime; 7 | using Android.Views; 8 | using Android.Widget; 9 | using Android.OS; 10 | using Xamarin.Forms.Platform.Android; 11 | using Acr.UserDialogs; 12 | 13 | namespace DataPagesDemo.Droid 14 | { 15 | [Activity (Label = "OCR Items", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 16 | public class MainActivity : FormsAppCompatActivity 17 | { 18 | protected override void OnCreate (Bundle bundle) 19 | { 20 | 21 | FormsAppCompatActivity.ToolbarResource = Resource.Layout.toolbar; 22 | FormsAppCompatActivity.TabLayoutResource = Resource.Layout.tabs; 23 | 24 | base.OnCreate (bundle); 25 | 26 | global::Xamarin.Forms.Forms.Init (this, bundle); 27 | 28 | UserDialogs.Init(this); 29 | 30 | Microsoft.WindowsAzure.MobileServices.CurrentPlatform.Init(); 31 | LoadApplication (new App ()); 32 | 33 | var x = typeof(Xamarin.Forms.Themes.DarkThemeResources); 34 | x = typeof(Xamarin.Forms.Themes.LightThemeResources); 35 | x = typeof(Xamarin.Forms.Themes.Android.UnderlineEffect); 36 | } 37 | } 38 | } 39 | 40 | -------------------------------------------------------------------------------- /Droid/OCRDemo.Android.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 7 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10} 8 | Library 9 | DataPagesDemo.Droid 10 | Assets 11 | Resources 12 | Properties\AndroidManifest.xml 13 | Resource 14 | Resources\Resource.designer.cs 15 | True 16 | True 17 | DataPagesDemo.Droid 18 | v6.0 19 | 20 | 21 | 22 | 23 | true 24 | full 25 | false 26 | bin\Debug 27 | DEBUG; 28 | prompt 29 | 4 30 | None 31 | false 32 | 33 | 34 | full 35 | true 36 | bin\Release 37 | prompt 38 | 4 39 | false 40 | false 41 | 42 | 43 | 44 | ..\packages\Acr.Support.2.1.0\lib\MonoAndroid10\Acr.Support.Android.dll 45 | True 46 | 47 | 48 | ..\packages\Acr.UserDialogs.6.0.1\lib\MonoAndroid10\Acr.UserDialogs.dll 49 | True 50 | 51 | 52 | ..\packages\Acr.UserDialogs.6.0.1\lib\MonoAndroid10\Acr.UserDialogs.Interface.dll 53 | True 54 | 55 | 56 | ..\packages\AndHUD.1.2.0\lib\MonoAndroid\AndHUD.dll 57 | True 58 | 59 | 60 | ..\packages\Xamarin.Forms.2.3.1.114\lib\MonoAndroid10\FormsViewGroup.dll 61 | True 62 | 63 | 64 | ..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll 65 | 66 | 67 | ..\packages\Splat.1.6.2\lib\monoandroid\Splat.dll 68 | True 69 | 70 | 71 | 72 | 73 | 74 | 75 | ..\packages\Xamarin.Android.Support.v4.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll 76 | 77 | 78 | ..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Vector.Drawable.dll 79 | 80 | 81 | ..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Animated.Vector.Drawable.dll 82 | 83 | 84 | ..\packages\Xamarin.Android.Support.v7.AppCompat.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll 85 | 86 | 87 | ..\packages\Xamarin.Android.Support.v7.RecyclerView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.RecyclerView.dll 88 | 89 | 90 | ..\packages\Xamarin.Android.Support.Design.23.3.0\lib\MonoAndroid43\Xamarin.Android.Support.Design.dll 91 | 92 | 93 | ..\packages\Xamarin.Android.Support.v7.CardView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll 94 | 95 | 96 | ..\packages\Xamarin.Android.Support.v7.MediaRouter.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll 97 | 98 | 99 | ..\packages\modernhttpclient.2.4.2\lib\MonoAndroid\ModernHttpClient.dll 100 | 101 | 102 | ..\packages\modernhttpclient.2.4.2\lib\MonoAndroid\OkHttp.dll 103 | 104 | 105 | ..\packages\Microsoft.Net.Http.2.2.29\lib\monoandroid\System.Net.Http.Primitives.dll 106 | 107 | 108 | ..\packages\Microsoft.Net.Http.2.2.29\lib\monoandroid\System.Net.Http.Extensions.dll 109 | 110 | 111 | 112 | ..\packages\Microsoft.Azure.Mobile.Client.2.0.1\lib\monoandroid\Microsoft.WindowsAzure.Mobile.dll 113 | 114 | 115 | ..\packages\Microsoft.Azure.Mobile.Client.2.0.1\lib\monoandroid\Microsoft.WindowsAzure.Mobile.Ext.dll 116 | 117 | 118 | ..\packages\Xamarin.Forms.2.3.1.114\lib\MonoAndroid10\Xamarin.Forms.Core.dll 119 | True 120 | 121 | 122 | ..\packages\Xamarin.Forms.Pages.2.3.0.107\lib\MonoAndroid10\Xamarin.Forms.Pages.dll 123 | 124 | 125 | ..\packages\Xamarin.Forms.Pages.Azure.2.3.0.107\lib\MonoAndroid10\Xamarin.Forms.Pages.Azure.dll 126 | 127 | 128 | ..\packages\Xamarin.Forms.2.3.1.114\lib\MonoAndroid10\Xamarin.Forms.Platform.dll 129 | True 130 | 131 | 132 | ..\packages\Xamarin.Forms.2.3.1.114\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll 133 | True 134 | 135 | 136 | ..\packages\Xamarin.Forms.Theme.Base.1.0.0.43-pre1\lib\MonoAndroid10\Xamarin.Forms.Theme.Base.dll 137 | 138 | 139 | ..\packages\Xamarin.Forms.Theme.Base.1.0.0.43-pre1\lib\MonoAndroid10\Xamarin.Forms.Theme.Android.dll 140 | 141 | 142 | ..\packages\Xamarin.Forms.Theme.Light.1.0.0.43-pre1\lib\MonoAndroid10\Xamarin.Forms.Theme.Light.dll 143 | 144 | 145 | ..\packages\Xamarin.Forms.Theme.Dark.1.0.0.43-pre1\lib\MonoAndroid10\Xamarin.Forms.Theme.Dark.dll 146 | 147 | 148 | ..\packages\Xamarin.Forms.2.3.1.114\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll 149 | True 150 | 151 | 152 | 153 | 154 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3} 155 | OCRDemo 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | Designer 171 | 172 | 173 | Designer 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. 199 | 200 | 201 | 202 | -------------------------------------------------------------------------------- /Droid/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Droid/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using Android.App; 4 | 5 | // Information about this assembly is defined by the following attributes. 6 | // Change them to the values specific to your project. 7 | 8 | [assembly: AssemblyTitle ("DataPagesDemo.Droid")] 9 | [assembly: AssemblyDescription ("")] 10 | [assembly: AssemblyConfiguration ("")] 11 | [assembly: AssemblyCompany ("")] 12 | [assembly: AssemblyProduct ("")] 13 | [assembly: AssemblyCopyright ("craigdunn")] 14 | [assembly: AssemblyTrademark ("")] 15 | [assembly: AssemblyCulture ("")] 16 | 17 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 18 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 19 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 20 | 21 | [assembly: AssemblyVersion ("1.0.0")] 22 | 23 | // The following attributes are used to specify the signing key for the assembly, 24 | // if desired. See the Mono documentation for more information about signing. 25 | 26 | //[assembly: AssemblyDelaySign(false)] 27 | //[assembly: AssemblyKeyFile("")] 28 | 29 | -------------------------------------------------------------------------------- /Droid/Resources/AboutResources.txt: -------------------------------------------------------------------------------- 1 | Images, layout descriptions, binary blobs and string dictionaries can be included 2 | in your application as resource files. Various Android APIs are designed to 3 | operate on the resource IDs instead of dealing with images, strings or binary blobs 4 | directly. 5 | 6 | For example, a sample Android app that contains a user interface layout (main.axml), 7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) 8 | would keep its resources in the "Resources" directory of the application: 9 | 10 | Resources/ 11 | drawable/ 12 | icon.png 13 | 14 | layout/ 15 | main.axml 16 | 17 | values/ 18 | strings.xml 19 | 20 | In order to get the build system to recognize Android resources, set the build action to 21 | "AndroidResource". The native Android APIs do not operate directly with filenames, but 22 | instead operate on resource IDs. When you compile an Android application that uses resources, 23 | the build system will package the resources for distribution and generate a class called "R" 24 | (this is an Android convention) that contains the tokens for each one of the resources 25 | included. For example, for the above Resources layout, this is what the R class would expose: 26 | 27 | public class R { 28 | public class drawable { 29 | public const int icon = 0x123; 30 | } 31 | 32 | public class layout { 33 | public const int main = 0x456; 34 | } 35 | 36 | public class strings { 37 | public const int first_string = 0xabc; 38 | public const int second_string = 0xbcd; 39 | } 40 | } 41 | 42 | You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main 43 | to reference the layout/main.axml file, or R.strings.first_string to reference the first 44 | string in the dictionary file values/strings.xml. 45 | -------------------------------------------------------------------------------- /Droid/Resources/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesmontemagno/app-ocr-functions/1d16c958cdc408f1012efb542e7865354fd170d4/Droid/Resources/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /Droid/Resources/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesmontemagno/app-ocr-functions/1d16c958cdc408f1012efb542e7865354fd170d4/Droid/Resources/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /Droid/Resources/drawable-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesmontemagno/app-ocr-functions/1d16c958cdc408f1012efb542e7865354fd170d4/Droid/Resources/drawable-xxhdpi/icon.png -------------------------------------------------------------------------------- /Droid/Resources/drawable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesmontemagno/app-ocr-functions/1d16c958cdc408f1012efb542e7865354fd170d4/Droid/Resources/drawable/icon.png -------------------------------------------------------------------------------- /Droid/Resources/layout/tabs.axml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Droid/Resources/layout/toolbar.axml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Droid/Resources/values-v21/style.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 8 | -------------------------------------------------------------------------------- /Droid/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | #2196F3 4 | #1976D2 5 | #FFC107 6 | #F5F5F5 7 | -------------------------------------------------------------------------------- /Droid/Resources/values/style.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 5 | 12 | -------------------------------------------------------------------------------- /Droid/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Droid/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 James Montemagno 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /OCRDemo.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OCRDemo", "OCRDemo\OCRDemo.csproj", "{C8DB796F-D98F-42E0-897B-3FDEE15C83F3}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OCRDemo.iOS", "iOS\OCRDemo.iOS.csproj", "{F3482F1C-C1CF-495F-91B2-CB1015BF305B}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OCRDemo.Android", "Droid\OCRDemo.Android.csproj", "{2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Debug|iPhone = Debug|iPhone 16 | Debug|iPhoneSimulator = Debug|iPhoneSimulator 17 | Release|Any CPU = Release|Any CPU 18 | Release|iPhone = Release|iPhone 19 | Release|iPhoneSimulator = Release|iPhoneSimulator 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Debug|iPhone.ActiveCfg = Debug|Any CPU 25 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Debug|iPhone.Build.0 = Debug|Any CPU 26 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU 27 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU 28 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Release|Any CPU.Build.0 = Release|Any CPU 30 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Release|iPhone.ActiveCfg = Release|Any CPU 31 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Release|iPhone.Build.0 = Release|Any CPU 32 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU 33 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU 34 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator 35 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator 36 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Debug|iPhone.ActiveCfg = Debug|iPhone 37 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Debug|iPhone.Build.0 = Debug|iPhone 38 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator 39 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator 40 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Release|Any CPU.ActiveCfg = Release|iPhone 41 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Release|Any CPU.Build.0 = Release|iPhone 42 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Release|iPhone.ActiveCfg = Release|iPhone 43 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Release|iPhone.Build.0 = Release|iPhone 44 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator 45 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator 46 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 47 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Debug|Any CPU.Build.0 = Debug|Any CPU 48 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Debug|Any CPU.Deploy.0 = Debug|Any CPU 49 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Debug|iPhone.ActiveCfg = Debug|Any CPU 50 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Debug|iPhone.Build.0 = Debug|Any CPU 51 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU 52 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU 53 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Release|Any CPU.ActiveCfg = Release|Any CPU 54 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Release|Any CPU.Build.0 = Release|Any CPU 55 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Release|iPhone.ActiveCfg = Release|Any CPU 56 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Release|iPhone.Build.0 = Release|Any CPU 57 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU 58 | {2D59380F-BB3E-4B8E-8BD7-AC0FF8FC2C10}.Release|iPhoneSimulator.Build.0 = Release|Any CPU 59 | EndGlobalSection 60 | GlobalSection(SolutionProperties) = preSolution 61 | HideSolutionNode = FALSE 62 | EndGlobalSection 63 | EndGlobal 64 | -------------------------------------------------------------------------------- /OCRDemo/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /OCRDemo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | using Xamarin.Forms; 5 | 6 | namespace DataPagesDemo 7 | { 8 | public partial class App : Application 9 | { 10 | public App () 11 | { 12 | InitializeComponent (); 13 | 14 | MainPage = new NavigationPage(new OCRItemsDataPage()) 15 | { 16 | BarBackgroundColor = Color.FromHex("2196F3"), 17 | BarTextColor = Color.White 18 | }; 19 | } 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /OCRDemo/OCRDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 7 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3} 8 | Library 9 | DataPagesDemo 10 | DataPagesDemo 11 | v4.5 12 | Profile78 13 | 14 | 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug 21 | DEBUG; 22 | prompt 23 | 4 24 | false 25 | 26 | 27 | full 28 | true 29 | bin\Release 30 | prompt 31 | 4 32 | false 33 | 34 | 35 | 36 | 37 | App.xaml 38 | 39 | 40 | OCRItemsDataPage.xaml 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | ..\packages\Acr.UserDialogs.6.0.1\lib\portable-win+net45+wp8+win8+wpa81\Acr.UserDialogs.dll 49 | True 50 | 51 | 52 | ..\packages\Acr.UserDialogs.6.0.1\lib\portable-win+net45+wp8+win8+wpa81\Acr.UserDialogs.Interface.dll 53 | True 54 | 55 | 56 | ..\packages\modernhttpclient.2.4.2\lib\Portable-Net45+WinRT45+WP8+WPA81\ModernHttpClient.dll 57 | 58 | 59 | ..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll 60 | 61 | 62 | ..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll 63 | True 64 | 65 | 66 | ..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll 67 | 68 | 69 | ..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll 70 | 71 | 72 | ..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll 73 | 74 | 75 | ..\packages\Microsoft.Azure.Mobile.Client.2.0.1\lib\portable-win+net45+wp8+wpa81+monotouch+monoandroid\Microsoft.WindowsAzure.Mobile.dll 76 | 77 | 78 | ..\packages\Xamarin.Forms.2.3.1.114\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Core.dll 79 | True 80 | 81 | 82 | ..\packages\Xamarin.Forms.Pages.2.3.0.107\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Pages.dll 83 | 84 | 85 | ..\packages\Xamarin.Forms.Pages.Azure.2.3.0.107\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Pages.Azure.dll 86 | 87 | 88 | ..\packages\Xamarin.Forms.2.3.1.114\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Platform.dll 89 | True 90 | 91 | 92 | ..\packages\Xamarin.Forms.2.3.1.114\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Xaml.dll 93 | True 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | MSBuild:UpdateDesignTimeXaml 103 | 104 | 105 | MSBuild:UpdateDesignTimeXaml 106 | Designer 107 | 108 | 109 | 110 | 111 | 112 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /OCRDemo/OCRItemsDataPage.xaml: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 42 | 43 | 44 | 45 | 46 | 47 | 51 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /OCRDemo/OCRItemsDataPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Runtime.CompilerServices; 4 | using Xamarin.Forms; 5 | using Acr.UserDialogs; 6 | using Xamarin.Forms.Pages.Azure; 7 | using Xamarin.Forms.Pages; 8 | using System.ComponentModel; 9 | 10 | namespace DataPagesDemo 11 | { 12 | public partial class OCRItemsDataPage : Xamarin.Forms.Pages.ListDataPage 13 | { 14 | public OCRItemsDataPage() 15 | { 16 | InitializeComponent (); 17 | 18 | 19 | ToolbarItems.Add(new ToolbarItem 20 | { 21 | Text = "Refresh", 22 | Command = new Command(() => 23 | { 24 | if (DataSource.IsLoading) 25 | return; 26 | 27 | ((INotifyPropertyChanged)((BaseDataSource)DataSource)).PropertyChanged -= OCRItemsDataPage_PropertyChanged; 28 | 29 | var current = (AzureEasyTableSource)((AzureDataSource)DataSource).Source; 30 | this.DataSource = new AzureDataSource 31 | { 32 | Source = new AzureEasyTableSource 33 | { 34 | TableName = current.TableName, 35 | Uri = current.Uri 36 | } 37 | }; 38 | }) 39 | }); 40 | 41 | 42 | } 43 | 44 | 45 | protected override void OnPropertyChanged([CallerMemberName] string propertyName = null) 46 | { 47 | if(propertyName == nameof(DataSource)) 48 | { 49 | ((INotifyPropertyChanged)((BaseDataSource)DataSource)).PropertyChanged += OCRItemsDataPage_PropertyChanged; 50 | 51 | } 52 | 53 | base.OnPropertyChanged(propertyName); 54 | 55 | } 56 | 57 | private void OCRItemsDataPage_PropertyChanged(object sender, PropertyChangedEventArgs e) 58 | { 59 | if(e.PropertyName == nameof(DataSource.IsLoading)) 60 | { 61 | Device.BeginInvokeOnMainThread(() => 62 | { 63 | if (DataSource.IsLoading) 64 | UserDialogs.Instance.ShowLoading("Loading..."); 65 | else 66 | UserDialogs.Instance.HideLoading(); 67 | }); 68 | } 69 | } 70 | } 71 | } 72 | 73 | -------------------------------------------------------------------------------- /OCRDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | // Information about this assembly is defined by the following attributes. 5 | // Change them to the values specific to your project. 6 | 7 | [assembly: AssemblyTitle ("DataPagesDemo")] 8 | [assembly: AssemblyDescription ("")] 9 | [assembly: AssemblyConfiguration ("")] 10 | [assembly: AssemblyCompany ("")] 11 | [assembly: AssemblyProduct ("")] 12 | [assembly: AssemblyCopyright ("craigdunn")] 13 | [assembly: AssemblyTrademark ("")] 14 | [assembly: AssemblyCulture ("")] 15 | 16 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 17 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 18 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 19 | 20 | [assembly: AssemblyVersion ("1.0.*")] 21 | 22 | // The following attributes are used to specify the signing key for the assembly, 23 | // if desired. See the Mono documentation for more information about signing. 24 | 25 | //[assembly: AssemblyDelaySign(false)] 26 | //[assembly: AssemblyKeyFile("")] 27 | 28 | -------------------------------------------------------------------------------- /OCRDemo/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OCRDemo/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | OCRDemo = Nano-Services with Azure Functions 2 | ========= 3 | Simply open up the OCRItemsDataPage.xaml and enter your Azure Mobile App backend URL 4 | 5 | ![OCR](Screenshots/demo.png) 6 | 7 | 8 | ## Azure Functions Setup 9 | Read the full blog at: 10 | 11 | 12 | See the video: 13 | 14 | 15 | ## Core for Azure Functions 16 | ```csharp 17 | #r "Microsoft.WindowsAzure.Storage" 18 | #r "System.Runtime" 19 | #r "System.Threading.Tasks" 20 | #r "System.IO" 21 | 22 | using System; 23 | using System.Linq; 24 | using System.Runtime; 25 | using System.Threading.Tasks; 26 | using Microsoft.WindowsAzure.Storage.Blob; 27 | using Microsoft.ProjectOxford.Vision; 28 | 29 | public static void Run(ICloudBlob myBlob, TraceWriter log, out object outputRecord) 30 | { 31 | var client = new VisionServiceClient("YOUR_API_KEY"); 32 | 33 | log.Info($"C# Blob trigger function processed: {myBlob.Uri.ToString()}"); 34 | 35 | var url = myBlob.Uri.ToString(); 36 | var result = client.RecognizeTextAsync(url).Result; 37 | 38 | var words = from r in result.Regions 39 | from l in r.Lines 40 | from w in l.Words 41 | select w.Text; 42 | 43 | var output = string.Join(" ", words.ToArray()); 44 | 45 | log.Info($"Complete output from OCR: {output}"); 46 | 47 | 48 | var numbers = from word in words 49 | where word.Contains("$") 50 | select word.Replace("$", ""); 51 | 52 | double temp = 0.0; 53 | var total = numbers.Count() == 0 ? 0.0 : numbers.Select(x => double.TryParse(x, out temp) ? temp : 0).Max(); 54 | 55 | log.Info($"We found the total of: {total}"); 56 | 57 | // 3. Add to data-bound collection. 58 | outputRecord = new 59 | { 60 | Total = total, 61 | TimeStamp = DateTime.UtcNow, 62 | Url = url, 63 | Text = output 64 | }; 65 | 66 | } 67 | ``` -------------------------------------------------------------------------------- /Screenshots/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesmontemagno/app-ocr-functions/1d16c958cdc408f1012efb542e7865354fd170d4/Screenshots/demo.png -------------------------------------------------------------------------------- /iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | using Foundation; 6 | using UIKit; 7 | 8 | namespace DataPagesDemo.iOS 9 | { 10 | [Register ("AppDelegate")] 11 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate 12 | { 13 | public override bool FinishedLaunching (UIApplication app, NSDictionary options) 14 | { 15 | global::Xamarin.Forms.Forms.Init (); 16 | 17 | LoadApplication (new App ()); 18 | 19 | var x = typeof(Xamarin.Forms.Themes.DarkThemeResources); 20 | x = typeof(Xamarin.Forms.Themes.LightThemeResources); 21 | x = typeof(Xamarin.Forms.Themes.iOS.UnderlineEffect); 22 | 23 | Microsoft.WindowsAzure.MobileServices.CurrentPlatform.Init(); 24 | 25 | return base.FinishedLaunching (app, options); 26 | } 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOS/Info.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | CFBundleDisplayName 6 | DataPagesDemo 7 | CFBundleIdentifier 8 | com.companyname.datapagesdemo 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1.0 13 | LSRequiresIPhoneOS 14 | 15 | MinimumOSVersion 16 | 7.0 17 | UIDeviceFamily 18 | 19 | 1 20 | 2 21 | 22 | UILaunchStoryboardName 23 | LaunchScreen 24 | UIRequiredDeviceCapabilities 25 | 26 | armv7 27 | 28 | UISupportedInterfaceOrientations 29 | 30 | UIInterfaceOrientationPortrait 31 | UIInterfaceOrientationLandscapeLeft 32 | UIInterfaceOrientationLandscapeRight 33 | 34 | UISupportedInterfaceOrientations~ipad 35 | 36 | UIInterfaceOrientationPortrait 37 | UIInterfaceOrientationPortraitUpsideDown 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | XSAppIconAssets 42 | Resources/Images.xcassets/AppIcons.appiconset 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | using Foundation; 6 | using UIKit; 7 | 8 | namespace DataPagesDemo.iOS 9 | { 10 | public class Application 11 | { 12 | // This is the main entry point of the application. 13 | static void Main (string[] args) 14 | { 15 | // if you want to use a different Application Delegate class from "AppDelegate" 16 | // you can specify it here. 17 | UIApplication.Main (args, null, "AppDelegate"); 18 | } 19 | } 20 | } 21 | 22 | -------------------------------------------------------------------------------- /iOS/OCRDemo.iOS.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | iPhoneSimulator 6 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 7 | {F3482F1C-C1CF-495F-91B2-CB1015BF305B} 8 | Exe 9 | DataPagesDemo.iOS 10 | Resources 11 | DataPagesDemoiOS 12 | 13 | 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\iPhoneSimulator\Debug 20 | DEBUG;ENABLE_TEST_CLOUD; 21 | prompt 22 | 4 23 | false 24 | i386 25 | None 26 | true 27 | true 28 | true 29 | true 30 | iPhone Developer 31 | true 32 | 33 | 34 | full 35 | true 36 | bin\iPhone\Release 37 | prompt 38 | 4 39 | false 40 | ARMv7, ARM64 41 | Entitlements.plist 42 | true 43 | true 44 | iPhone Developer 45 | true 46 | 47 | 48 | full 49 | true 50 | bin\iPhoneSimulator\Release 51 | prompt 52 | 4 53 | false 54 | i386 55 | None 56 | true 57 | iPhone Developer 58 | true 59 | 60 | 61 | true 62 | full 63 | false 64 | bin\iPhone\Debug 65 | DEBUG;ENABLE_TEST_CLOUD; 66 | prompt 67 | 4 68 | false 69 | ARMv7, ARM64 70 | Entitlements.plist 71 | true 72 | iPhone Developer 73 | true 74 | true 75 | true 76 | true 77 | true 78 | 79 | 80 | 81 | ..\packages\Acr.Support.2.1.0\lib\Xamarin.iOS10\Acr.Support.iOS.dll 82 | True 83 | 84 | 85 | ..\packages\Acr.UserDialogs.6.0.1\lib\Xamarin.iOS10\Acr.UserDialogs.dll 86 | True 87 | 88 | 89 | ..\packages\Acr.UserDialogs.6.0.1\lib\Xamarin.iOS10\Acr.UserDialogs.Interface.dll 90 | True 91 | 92 | 93 | ..\packages\BTProgressHUD.1.2.0.3\lib\Xamarin.iOS10\BTProgressHUD.dll 94 | True 95 | 96 | 97 | ..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll 98 | 99 | 100 | ..\packages\Splat.1.6.2\lib\Xamarin.iOS10\Splat.dll 101 | True 102 | 103 | 104 | 105 | 106 | 107 | ..\packages\Xamarin.Forms.2.3.1.114\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll 108 | True 109 | 110 | 111 | ..\packages\Xamarin.Forms.Pages.2.3.0.107\lib\Xamarin.iOS10\Xamarin.Forms.Pages.dll 112 | 113 | 114 | ..\packages\Xamarin.Forms.Pages.Azure.2.3.0.107\lib\Xamarin.iOS10\Xamarin.Forms.Pages.Azure.dll 115 | 116 | 117 | ..\packages\Xamarin.Forms.2.3.1.114\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll 118 | True 119 | 120 | 121 | ..\packages\Xamarin.Forms.2.3.1.114\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll 122 | True 123 | 124 | 125 | ..\packages\Xamarin.Forms.2.3.1.114\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll 126 | True 127 | 128 | 129 | 130 | ..\packages\modernhttpclient.2.4.2\lib\Xamarin.iOS10\ModernHttpClient.dll 131 | 132 | 133 | ..\packages\Microsoft.Net.Http.2.2.29\lib\Xamarin.iOS10\System.Net.Http.Primitives.dll 134 | 135 | 136 | ..\packages\Microsoft.Net.Http.2.2.29\lib\Xamarin.iOS10\System.Net.Http.Extensions.dll 137 | 138 | 139 | ..\packages\Microsoft.Azure.Mobile.Client.2.0.1\lib\Xamarin.iOS10\Microsoft.WindowsAzure.Mobile.dll 140 | 141 | 142 | ..\packages\Microsoft.Azure.Mobile.Client.2.0.1\lib\Xamarin.iOS10\Microsoft.WindowsAzure.Mobile.Ext.dll 143 | 144 | 145 | ..\packages\Xamarin.Forms.Theme.Base.1.0.0.43-pre1\lib\Xamarin.iOS10\Xamarin.Forms.Theme.Base.dll 146 | 147 | 148 | ..\packages\Xamarin.Forms.Theme.Base.1.0.0.43-pre1\lib\Xamarin.iOS10\Xamarin.Forms.Theme.iOS.dll 149 | 150 | 151 | ..\packages\Xamarin.Forms.Theme.Dark.1.0.0.43-pre1\lib\Xamarin.iOS10\Xamarin.Forms.Theme.Dark.dll 152 | 153 | 154 | ..\packages\Xamarin.Forms.Theme.Light.1.0.0.43-pre1\lib\Xamarin.iOS10\Xamarin.Forms.Theme.Light.dll 155 | 156 | 157 | 158 | 159 | {C8DB796F-D98F-42E0-897B-3FDEE15C83F3} 160 | OCRDemo 161 | 162 | 163 | 164 | 165 | false 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. 187 | 188 | 189 | 190 | -------------------------------------------------------------------------------- /iOS/Resources/Images.xcassets/AppIcons.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "size": "29x29", 5 | "scale": "1x", 6 | "idiom": "iphone" 7 | }, 8 | { 9 | "size": "29x29", 10 | "scale": "2x", 11 | "idiom": "iphone" 12 | }, 13 | { 14 | "size": "29x29", 15 | "scale": "3x", 16 | "idiom": "iphone" 17 | }, 18 | { 19 | "size": "40x40", 20 | "scale": "2x", 21 | "idiom": "iphone" 22 | }, 23 | { 24 | "size": "40x40", 25 | "scale": "3x", 26 | "idiom": "iphone" 27 | }, 28 | { 29 | "size": "57x57", 30 | "scale": "1x", 31 | "idiom": "iphone" 32 | }, 33 | { 34 | "size": "57x57", 35 | "scale": "2x", 36 | "idiom": "iphone" 37 | }, 38 | { 39 | "size": "60x60", 40 | "scale": "2x", 41 | "idiom": "iphone" 42 | }, 43 | { 44 | "size": "60x60", 45 | "scale": "3x", 46 | "idiom": "iphone" 47 | }, 48 | { 49 | "size": "29x29", 50 | "scale": "1x", 51 | "idiom": "ipad" 52 | }, 53 | { 54 | "size": "29x29", 55 | "scale": "2x", 56 | "idiom": "ipad" 57 | }, 58 | { 59 | "size": "40x40", 60 | "scale": "1x", 61 | "idiom": "ipad" 62 | }, 63 | { 64 | "size": "40x40", 65 | "scale": "2x", 66 | "idiom": "ipad" 67 | }, 68 | { 69 | "size": "50x50", 70 | "scale": "1x", 71 | "idiom": "ipad" 72 | }, 73 | { 74 | "size": "50x50", 75 | "scale": "2x", 76 | "idiom": "ipad" 77 | }, 78 | { 79 | "size": "72x72", 80 | "scale": "1x", 81 | "idiom": "ipad" 82 | }, 83 | { 84 | "size": "72x72", 85 | "scale": "2x", 86 | "idiom": "ipad" 87 | }, 88 | { 89 | "size": "76x76", 90 | "scale": "1x", 91 | "idiom": "ipad" 92 | }, 93 | { 94 | "size": "76x76", 95 | "scale": "2x", 96 | "idiom": "ipad" 97 | }, 98 | { 99 | "size": "120x120", 100 | "scale": "1x", 101 | "idiom": "car" 102 | } 103 | ], 104 | "info": { 105 | "version": 1, 106 | "author": "xcode" 107 | } 108 | } -------------------------------------------------------------------------------- /iOS/Resources/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /iOS/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /iOS/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | --------------------------------------------------------------------------------