{"id":38818,"date":"2022-12-20T14:56:26","date_gmt":"2022-12-20T13:56:26","guid":{"rendered":"https:\/\/www.inovex.de\/?p=38818"},"modified":"2026-02-18T07:41:56","modified_gmt":"2026-02-18T06:41:56","slug":"how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/","title":{"rendered":"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3)"},"content":{"rendered":"<p>Welcome to the third part of this blog series \u201cEnhancing Pepper robot with AI with <a href=\"https:\/\/developers.google.com\/ml-kit\" target=\"_blank\" rel=\"noopener\">Google\u2019s ML Kit<\/a>\u201c! In case you missed the previous articles, I recommend you start reading <a href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-1\">here<\/a> for an introduction to what we are building in this series. In the <a href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-2\">second part,<\/a> we saw how to use ML Kit to teach Pepper to recognize objects around it and point at them.\u00a0\u00a0<!--more--><\/p>\n<p>In this article, we will explore is the <a href=\"https:\/\/developers.google.com\/ml-kit\/vision\/digital-ink-recognition\" target=\"_blank\" rel=\"noopener\">Digital Ink Recognition API<\/a>\u00a0of Google&#8217;s ML Kit. We are going to leverage the Kit&#8217;s ability to recognize sketches and handwritten text on a digital surface to implement the following game: we will draw or write something on the tablet on Pepper&#8217;s chest and Pepper should be able to recognize what it is. Let\u2019s look at an example video to see how it is supposed to work before we dive in.<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-38818-1\" width=\"640\" height=\"360\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/PXL_20220826_121943316_s.mp4?_=1\" \/><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/PXL_20220826_121943316_s.mp4\">https:\/\/www.inovex.de\/wp-content\/uploads\/PXL_20220826_121943316_s.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p>Funny, isn&#8217;t it? It does a good job recognizing my drawings even given my poor skills! Let&#8217;s see how to implement this in our Android App.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#Implementation\" >Implementation<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#How-to-draw\" >How to draw<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#How-to-recognize-a-drawing\" >How to recognize a drawing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#How-to-set-everything-up\" >How to set everything up<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#How-to-process-the-results\" >How to process the results<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#Voice-interaction\" >Voice interaction<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Implementation\"><\/span>Implementation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/github.com\/SilviaSantano\/Pepper-and-MLKit\" target=\"_blank\" rel=\"noopener\">Here<\/a> you can find the full code of the application.<\/p>\n<p>The implementation of the recognition is based on the <a href=\"https:\/\/github.com\/googlesamples\/mlkit\/tree\/master\/android\/digitalink\" target=\"_blank\" rel=\"noopener\">Quickstart sample application<\/a>.<\/p>\n<p>With regards to the architecture, we have the following classes: our fragment, the <em>ViewModel<\/em>, the <em>DrawingView<\/em>, which will be our main view with which we interact by touch, the <em>ModelManager<\/em> to manage the download and selection of ML models, the <em>StrokeManager<\/em> class that is the center of the recognition logic and the <em>RecognitionTask<\/em> that contains the task that will run asynchronously to obtain the recognition results.<\/p>\n<p>Of course, we also need a layout that includes the <em>DrawingView<\/em>. In addition to recognizing drawings, this API also includes a mode to recognize handwritten text in different languages. We will use this as well and offer both options in the game by adding a toggle to the layout, through which the user can change from one mode to the other.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How-to-draw\"><\/span>How to draw<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To draw something on a touch screen, we need four basic components: a <em>Bitmap<\/em> to hold the pixels, a <em>Canvas<\/em> to host the draw calls that write into the bitmap, and drawing primitives such as <em>Rect, Path, text, Bitmap,<\/em> and some <em>Paint<\/em>.<\/p>\n<p>The main component that is going to allow us to recognize what has been written or drawn on the screen is the <em>Ink<\/em> object. It represents the user input as a sequence of strokes (a stroke being a sequence of touch points between the finger-down and finger-up events). This will, later on, serve as input to the recognizer. The way to build it is to draw it on the canvas that we are going to hold on our <em>DrawingView<\/em>, the main view for rendering content with the mentioned basic components. This <em>View<\/em> reacts to touch inputs, renders them on the canvas, and passes the content to the <em>StrokeManager<\/em> to store the points in the strokes drawn into the <em>Ink<\/em> object.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How-to-recognize-a-drawing\"><\/span>How to recognize a drawing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The <em>StrokeManager<\/em>, in turn, manages the recognition logic and the content that has been added by scheduling the recognition on the background thread whenever it is notified that new content was added.<\/p>\n<p>The <em>RecognitionTask<\/em> does so by triggering an asynchronous task in which we pass the <em>Ink<\/em> object to the <em>DigitalInkRecognizer<\/em>, the core component of the DigitalInk API from ML Kit. The recognizer returns a list of recognition candidates.<\/p>\n<p>The <em>StrokeManager<\/em> will notify the fragment through an interface when the recognition content changes.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How-to-set-everything-up\"><\/span>How to set everything up<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To set it all up, the first thing we do in <em>onViewCreated<\/em> in our fragment is initialize the <em>StrokeManager<\/em> in our <em>DrawingView<\/em>.<\/p>\n<p>Then, we download or update the ML Kit Ink Recognition models, if needed, and select the active mode (draw or text) based on the user selection on the screen through the toggle. We also set the event listeners for the interaction with the user: to start recognizing, to clear the screen, and to repeat the rules.<\/p>\n<p>Lastly, Pepper will explain the rules and afterward wait for the user to finish drawing and either click the button or say that they are done. When either of those happens, the recognition task will be started asynchronously from the StrokeManager using the <em>DigitalInkRecognizer<\/em> object.<\/p>\n<p>This is how we initialize everything in the <em>onViewCreated<\/em> method of our fragment:<\/p>\n<pre class=\"theme:classic lang:java decode:true\">override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\r\n    super.onViewCreated(view, savedInstanceState)\r\n\r\n    \/\/ Init Stroke Manager\r\n    binding.drawingDrawingView.setStrokeManager(strokeManager)\r\n    strokeManager.setContentChangedListener(this)\r\n    strokeManager.setClearCurrentInkAfterRecognition(true)\r\n    strokeManager.setTriggerRecognitionAfterInput(false)\r\n    strokeManager.reset()\r\n\r\n    \/\/ Download ML Kit Ink Recognition models and select active model\r\n    strokeManager.downloadModels()\r\n    mode = selectActiveMode()\r\n    strokeManager.setActiveModel(mode.string)\r\n\r\n    \/\/ Model changed listener\r\n    binding.drawingModelSwitch.setOnCheckedChangeListener { _, _ -&gt;\r\n        mode = selectActiveMode()\r\n        strokeManager.setActiveModel(mode.string)\r\n\r\n        mainViewModel.setQiChatVariable(\r\n            getString(R.string.GameMode),\r\n            if (mode == Mode.DRAWING) getString(R.string.drawingMode)\r\n            else getString(\r\n                R.string.textMode\r\n            )\r\n        )\r\n        mainViewModel.goToQiChatBookmark(getString(R.string.changedModeBookmark))\r\n    }\r\n\r\n    \/\/ Button Listeners\r\n    viewModel.uiEvents.observe(viewLifecycleOwner) {\r\n        when (it) {\r\n            DrawingViewModel.UiEvent.ExplainRules -&gt; explainDrawingRules()\r\n            DrawingViewModel.UiEvent.Clear -&gt; clear()\r\n            DrawingViewModel.UiEvent.RecognizeDrawing -&gt; recognizeDrawing()\r\n        }\r\n    }\r\n    explainDrawingRules()\r\n}<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"How-to-process-the-results\"><\/span>How to process the results<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>As mentioned earlier, our fragment needs to implement the interface <em>StrokeManager.ContentChangedListener<\/em> and override the method <em>onDrawingContentChanged<\/em> to be notified when the recognized content changes.<\/p>\n<p>This is what we will do when the recognized content has changed after the user is done drawing:<\/p>\n<pre class=\"theme:classic lang:java decode:true\">override fun onDrawingContentChanged() {\r\n    if (strokeManager.getContent().isNotEmpty()) {\r\n        translateAndSayResult(strokeManager.getContent()[0].text ?: \"\")\r\n    } else {\r\n        goToNotRecognizedDrawingBookmark()\r\n    }\r\n}<\/pre>\n<p>At that moment, the result will be translated, using the ML Kit Translation API (this will be explored in detail in another article of this series), in case needed, and made available to be told to the user via the chat using a <em>bookmark<\/em> and a <em>QiChat<\/em> variable. If nothing is available, Pepper will respond accordingly informing that nothing could be recognized.<\/p>\n<pre class=\"theme:classic lang:java decode:true\">private fun translateAndSayResult(text: String) {\r\n    \/\/ Translate from english to the robot language if necessary and then go to the bookmark\r\n    if (mode != Mode.DRAWING || mainViewModel.language == Language.ENGLISH) {\r\n        goToRecognizedDrawingBookmark(text)\r\n    } else {\r\n        mainViewModel.translate(Language.ENGLISH, mainViewModel.language, text)\r\n            .addOnSuccessListener { translated -&gt;\r\n                goToRecognizedDrawingBookmark(translated)\r\n            }\r\n    }\r\n}<\/pre>\n<pre class=\"theme:classic lang:default decode:true \">private fun goToRecognizedDrawingBookmark(text: String) {\r\n    mainViewModel.setQiChatVariable(getString(R.string.recognizedDrawing), text)\r\n    mainViewModel.goToQiChatBookmark(getString(R.string.recognizedDrawingBookmark))\r\n}<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Voice-interaction\"><\/span>Voice interaction<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Finally, both the UI and the logic are finished and the last thing that is necessary is the voice interaction of the game.<\/p>\n<p>The dialog is always a very important part of a Pepper application as it constitutes how the user will communicate with the robot and the experience will very much be influenced by how the dialog is built. There are some essential concepts to take into account when designing the dialog to create a meaningful experience. For instance, Pepper should react to several ways how the user may ask a question or say something, otherwise, if it only knows one there is too big a chance that the user will decide on another and nothing will be recognized. How many? As many as you can think of is best. To provide a good experience, it is also interesting to do the same in the other direction, i.e., let Pepper answer slightly differently every time, so that it is not too repetitive and boring. This can be done by including several variations of an answer that are somewhat different in wording and programming a random pick. For example, making use of <em>QiChat<\/em> <em>Concepts<\/em>. Also, think of a Plan B, in case the dialog does not go as planned. For example, use the tablet to replicate the most important functions so that the user has another way to access the feature in case the dialog does not work, e.g., because it is too loud for them to understand each other. Another important point is to pay attention to the language the robot is using, making sure it is clear, and understandable, both acoustically by setting pauses at the right moments and in terms of content, not ambiguous. Moreover, the content should be adapted to the setting, the context, and the user. Not too formal, not too informal, friendly, respectful, etc.<\/p>\n<p>This is what the part in our chat topic related to this game looks like. As you can see, we make extensive use of <em>Bookmarks<\/em> and <em>QiChatVariables<\/em> to communicate back and forth with the logic:<\/p>\n<pre class=\"theme:inlellij-idea lang:default decode:true \">concept:(ready) [\"ready\" \"i'm ready\" \"done\" \"i'm done\" \"i am ready\" \"i am done\"]\r\nconcept:(recognizing) ^rand[\"mmm let me think just a moment\" \"okay, give me a second, what could that be?\" \"oh, that one's easy!\" \"let me think about it\"]\r\nconcept:(correctguess) ^rand[\"yay super!\" \"i knew it!\" \"cool! I'm glad\" \"cool! you've done a very nice drawing\"]\r\nconcept:(again) ^rand[\"let's play one more time\" \"do you want to play again?\" \"would you like to play once more?\" \"that was cool, let's do it again\" \"are you up for another round?\"]\r\n\r\nu:(^empty) %drawingRulesBookmark Hey, let's play a drawing game! \\pau=600\\ Think of something and draw it on my Tablet! \\pau=600\\ Using machine learning I will try to recognize what it is. Are you ready?\r\n    u1:(~yes) great! \\pau=600\\ let's see %startGameBookmark \\pau=600\\ say done or press the button when you're done\r\n    u1:(~no) okay, maybe later!\r\n\r\nu:(drawing) %startDrawingBookmark\r\n\r\nu:(~ready) %readyToRecognizeBookmark\r\n\r\nu:(^empty) %recognizedDrawingBookmark ~recognizing \\pau=500\\ I would say it's a \\pau=500\\ $recognizedDrawing \\pau=1000\\ is it correct?\r\n    u1:(~yes) ~correctguess \\pau=500\\ ~again %clearBookmark\r\n    u1:(~no) ouch! please try again %clearBookmark\r\n\r\nu:(^empty) %notRecognizeDrawingBookmark hmmm I can't really say what that is... would you like to try again?\r\n    u1:(~yes) great\r\n    u1:(~no) okay, maybe later!<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This is only a demo use case that you can build combining ML Kit DigitalInkRecognition API and Pepper but not all you can do, as the combination of both truly gives the opportunity to do a lot more cool apps and fun games that involve recognizing handwritten text and drawings on its tablet.<\/p>\n<p>I hope you enjoyed the implementation of this game! Check out the rest of the articles of this series, where we\u2019re going to see more use cases and how to implement them in our ML-Kit-powered Android app for the Pepper robot!<\/p>\n<ol class=\"ol-styled\">\n<li><strong><a title=\"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 1)\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-1\/\" rel=\"\">Introduction<\/a><\/strong><\/li>\n<li><strong><a title=\"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 2)\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-2\/\" rel=\"\">demo with ML Kit&#8217;s Object Detection API<\/a><\/strong><\/li>\n<li><strong>demo with ML Kit&#8217;s digital ink recognition api (this article)<\/strong><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Welcome to the third part of this blog series \u201cEnhancing Pepper robot with AI with Google\u2019s ML Kit\u201c! In case you missed the previous articles, I recommend you start reading here for an introduction to what we are building in this series. In the second part, we saw how to use ML Kit to teach [&hellip;]<\/p>\n","protected":false},"author":57,"featured_media":40560,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[149,510,511,151,727,724,140,725,726],"service":[420,76],"coauthors":[{"id":57,"display_name":"Silvia Santano","user_nicename":"ssantano"}],"class_list":["post-38818","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-android","tag-apps-2","tag-artificial-intelligence-2","tag-deep-learning","tag-human-computer-interaction","tag-kotlin","tag-machine-learning","tag-pepper","tag-robotics","service-apps","service-artificial-intelligence"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3) - inovex GmbH<\/title>\n<meta name=\"description\" content=\"This article show how to enhance the robot Pepper with the Digital Ink Recognition API\u00a0of Google&#039;s ML Kit to recognize sketches and handwriting.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3) - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"This article show how to enhance the robot Pepper with the Digital Ink Recognition API\u00a0of Google&#039;s ML Kit to recognize sketches and handwriting.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-20T13:56:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-18T06:41:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/enhancing-pepper-with-ai-part-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1921\" \/>\n\t<meta property=\"og:image:height\" content=\"1081\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Silvia Santano\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/enhancing-pepper-with-ai-part-3-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Silvia Santano\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Silvia Santano\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/\"},\"author\":{\"name\":\"Silvia Santano\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/f2d17a49f3a806bc6cdb4902a32a0ef9\"},\"headline\":\"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3)\",\"datePublished\":\"2022-12-20T13:56:26+00:00\",\"dateModified\":\"2026-02-18T06:41:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/\"},\"wordCount\":1324,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/enhancing-pepper-with-ai-part-3.png\",\"keywords\":[\"Android\",\"Apps\",\"Artificial Intelligence\",\"Deep Learning\",\"Human-Computer-Interaction\",\"Kotlin\",\"Machine Learning\",\"Pepper\",\"Robotics\"],\"articleSection\":[\"Analytics\",\"Applications\",\"English Content\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/\",\"name\":\"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3) - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/enhancing-pepper-with-ai-part-3.png\",\"datePublished\":\"2022-12-20T13:56:26+00:00\",\"dateModified\":\"2026-02-18T06:41:56+00:00\",\"description\":\"This article show how to enhance the robot Pepper with the Digital Ink Recognition API\u00a0of Google's ML Kit to recognize sketches and handwriting.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/enhancing-pepper-with-ai-part-3.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/enhancing-pepper-with-ai-part-3.png\",\"width\":1921,\"height\":1081,\"caption\":\"Pepper the robot on orange background with superimposed brain\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/f2d17a49f3a806bc6cdb4902a32a0ef9\",\"name\":\"Silvia Santano\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-IMG_6952-2-scaled-e1665488822192-1-96x96.jpegbd867eef3c3c053b3e6e1634ffac9ffc\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-IMG_6952-2-scaled-e1665488822192-1-96x96.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-IMG_6952-2-scaled-e1665488822192-1-96x96.jpeg\",\"caption\":\"Silvia Santano\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/ssantano\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3) - inovex GmbH","description":"This article show how to enhance the robot Pepper with the Digital Ink Recognition API\u00a0of Google's ML Kit to recognize sketches and handwriting.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/","og_locale":"de_DE","og_type":"article","og_title":"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3) - inovex GmbH","og_description":"This article show how to enhance the robot Pepper with the Digital Ink Recognition API\u00a0of Google's ML Kit to recognize sketches and handwriting.","og_url":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2022-12-20T13:56:26+00:00","article_modified_time":"2026-02-18T06:41:56+00:00","og_image":[{"width":1921,"height":1081,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/enhancing-pepper-with-ai-part-3.png","type":"image\/png"}],"author":"Silvia Santano","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/enhancing-pepper-with-ai-part-3-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Silvia Santano","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten","Written by":"Silvia Santano"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/"},"author":{"name":"Silvia Santano","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/f2d17a49f3a806bc6cdb4902a32a0ef9"},"headline":"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3)","datePublished":"2022-12-20T13:56:26+00:00","dateModified":"2026-02-18T06:41:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/"},"wordCount":1324,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/enhancing-pepper-with-ai-part-3.png","keywords":["Android","Apps","Artificial Intelligence","Deep Learning","Human-Computer-Interaction","Kotlin","Machine Learning","Pepper","Robotics"],"articleSection":["Analytics","Applications","English Content","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/","url":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/","name":"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3) - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/enhancing-pepper-with-ai-part-3.png","datePublished":"2022-12-20T13:56:26+00:00","dateModified":"2026-02-18T06:41:56+00:00","description":"This article show how to enhance the robot Pepper with the Digital Ink Recognition API\u00a0of Google's ML Kit to recognize sketches and handwriting.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/enhancing-pepper-with-ai-part-3.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/enhancing-pepper-with-ai-part-3.png","width":1921,"height":1081,"caption":"Pepper the robot on orange background with superimposed brain"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/how-to-use-googles-ml-kit-to-enhance-pepper-with-ai-part-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"How to Use Google\u2019s ML Kit to Enhance Pepper With AI (Part 3)"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/f2d17a49f3a806bc6cdb4902a32a0ef9","name":"Silvia Santano","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-IMG_6952-2-scaled-e1665488822192-1-96x96.jpegbd867eef3c3c053b3e6e1634ffac9ffc","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-IMG_6952-2-scaled-e1665488822192-1-96x96.jpeg","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-IMG_6952-2-scaled-e1665488822192-1-96x96.jpeg","caption":"Silvia Santano"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/ssantano\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/38818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/57"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=38818"}],"version-history":[{"count":5,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/38818\/revisions"}],"predecessor-version":[{"id":66231,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/38818\/revisions\/66231"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/40560"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=38818"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=38818"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=38818"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=38818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}