{"id":21511,"date":"2017-04-19T16:16:44","date_gmt":"2017-04-19T16:16:44","guid":{"rendered":"http:\/\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images"},"modified":"2017-04-19T16:16:44","modified_gmt":"2017-04-19T16:16:44","slug":"how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images","title":{"rendered":"How to use OCR Text Recognition to automatically transform images"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>Websites of all kinds enhance user experience with images. In fact, images appear on almost every Web page. Some of the images are uploaded by users, some are proprietary, and some come from 3rd parties. Regardless of origin, many of these images include text elements, and sometimes you need to be aware of or handle that text.<\/p>\n<p>For example, you might need to:<\/p>\n<ul>\n<li>Blur or pixelate texts that you don\u2019t want displayed on your website<\/li>\n<li>Cover text in an uploaded image with another image<\/li>\n<li>Have an automatic way to extract the text content so you can programmatically analyze it or perform operations based on the detected text. For example, you might want to make sure uploaded images do not contain too much text, or maybe you want to tag your images based on keywords detected in them.<\/li>\n<\/ul>\n<p>These are common needs, but it\u2019s a hassle to do these things manually, even for your own proprietary images, and not an option for images that are uploaded by your users for immediate display.<\/p>\n<p>The good news: This article will show you how you can handle all these and other text detection scenarios, on-the-fly, with only one or a few lines of code. Here are a couple examples:<\/p>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<div style=\"text-align:center;\">\n<span style=\"display:inline-block;vertical-align:top;margin-bottom: 20px\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/c_crop,w_1300,h_900,g_south_east\/l_sample,o_0,bo_2px_solid_red,fl_region_relative,w_1.1,h_1.0,g_ocr_text\/highway_sign.jpg\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/c_crop,w_1300,h_900,g_south_east\/l_sample,o_0,bo_2px_solid_red,fl_region_relative,w_1.1,h_1.0,g_ocr_text\/w_350\/highway_sign.jpg\" alt=\"An outline overlay shows automatically detected text\" title=\"An outline overlay shows automatically detected text\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>An outline overlay shows<br\/>automatically detected text<\/i><\/small>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/c_crop,w_1300,h_900,g_south_east\/e_pixelate_region,g_ocr_text\/highway_sign.jpg\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/c_crop,w_1300,h_900,g_south_east\/e_pixelate_region,g_ocr_text\/w_350\/highway_sign.jpg\" alt=\"The pixelate effect hides detected text\" title=\"The pixelate effect hides detected text\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>The pixelate effect hides<br\/>detected text<\/i><\/small>\n<\/span>\n<\/div>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<p>Here\u2019s the code that builds the delivery URL for the right-hand (pixelated) image above:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;highway_sign.jpg\\&quot;, {transformation: [ {width: 1300, height: 900, gravity: \\&quot;south_east\\&quot;, crop: \\&quot;crop\\&quot;}, {effect: \\&quot;pixelate_region\\&quot;, gravity: \\&quot;ocr_text\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;highway_sign.jpg\\&quot;, {transformation: [\\n  {width: 1300, height: 900, gravity: \\&quot;south_east\\&quot;, crop: \\&quot;crop\\&quot;},\\n  {effect: \\&quot;pixelate_region\\&quot;, gravity: \\&quot;ocr_text\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;highway_sign.jpg\\&quot; &gt; &lt;Transformation width=\\&quot;1300\\&quot; height=\\&quot;900\\&quot; gravity=\\&quot;south_east\\&quot; crop=\\&quot;crop\\&quot; \\\/&gt; &lt;Transformation effect=\\&quot;pixelate_region\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;highway_sign.jpg\\&quot; &gt;\\n\\t&lt;Transformation width=\\&quot;1300\\&quot; height=\\&quot;900\\&quot; gravity=\\&quot;south_east\\&quot; crop=\\&quot;crop\\&quot; \\\/&gt;\\n\\t&lt;Transformation effect=\\&quot;pixelate_region\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;highway_sign.jpg\\&quot; &gt; &lt;cld-transformation width=\\&quot;1300\\&quot; height=\\&quot;900\\&quot; gravity=\\&quot;south_east\\&quot; crop=\\&quot;crop\\&quot; \\\/&gt; &lt;cld-transformation effect=\\&quot;pixelate_region\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;highway_sign.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation width=\\&quot;1300\\&quot; height=\\&quot;900\\&quot; gravity=\\&quot;south_east\\&quot; crop=\\&quot;crop\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation effect=\\&quot;pixelate_region\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;highway_sign.jpg\\&quot; &gt; &lt;cl-transformation width=\\&quot;1300\\&quot; height=\\&quot;900\\&quot; gravity=\\&quot;south_east\\&quot; crop=\\&quot;crop\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation effect=\\&quot;pixelate_region\\&quot; gravity=\\&quot;ocr_text\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;highway_sign.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation width=\\&quot;1300\\&quot; height=\\&quot;900\\&quot; gravity=\\&quot;south_east\\&quot; crop=\\&quot;crop\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation effect=\\&quot;pixelate_region\\&quot; gravity=\\&quot;ocr_text\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;highway_sign.jpg&#039;, {transformation: [ {width: 1300, height: 900, gravity: \\&quot;south_east\\&quot;, crop: \\&quot;crop\\&quot;}, {effect: \\&quot;pixelate_region\\&quot;, gravity: \\&quot;ocr_text\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;highway_sign.jpg&#039;, {transformation: [\\n  {width: 1300, height: 900, gravity: \\&quot;south_east\\&quot;, crop: \\&quot;crop\\&quot;},\\n  {effect: \\&quot;pixelate_region\\&quot;, gravity: \\&quot;ocr_text\\&quot;}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;).image(transformation=[ {&#039;width&#039;: 1300, &#039;height&#039;: 900, &#039;gravity&#039;: \\&quot;south_east\\&quot;, &#039;crop&#039;: \\&quot;crop\\&quot;}, {&#039;effect&#039;: \\&quot;pixelate_region\\&quot;, &#039;gravity&#039;: \\&quot;ocr_text\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;).image(transformation=[\\n  {&#039;width&#039;: 1300, &#039;height&#039;: 900, &#039;gravity&#039;: \\&quot;south_east\\&quot;, &#039;crop&#039;: \\&quot;crop\\&quot;},\\n  {&#039;effect&#039;: \\&quot;pixelate_region\\&quot;, &#039;gravity&#039;: \\&quot;ocr_text\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;highway_sign.jpg&#039;))\\n\\t-&gt;resize(Resize::crop()-&gt;width(1300)\\n-&gt;height(900)\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::southEast()))\\n\\t)\\n\\t-&gt;effect(Effect::pixelate()\\n\\t-&gt;region(\\n\\tRegion::ocr())\\n\\t);&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;highway_sign.jpg&#039;))\\n\\t-&gt;resize(Resize::crop()-&gt;width(1300)\\n-&gt;height(900)\\n\\t-&gt;gravity(\\n\\tGravity::compass(\\n\\tCompass::southEast()))\\n\\t)\\n\\t-&gt;effect(Effect::pixelate()\\n\\t-&gt;region(\\n\\tRegion::ocr())\\n\\t);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;highway_sign.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;width\\&quot;=&gt;1300, \\&quot;height\\&quot;=&gt;900, \\&quot;gravity\\&quot;=&gt;\\&quot;south_east\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;crop\\&quot;), array(\\&quot;effect\\&quot;=&gt;\\&quot;pixelate_region\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;ocr_text\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;highway_sign.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;width\\&quot;=&gt;1300, \\&quot;height\\&quot;=&gt;900, \\&quot;gravity\\&quot;=&gt;\\&quot;south_east\\&quot;, \\&quot;crop\\&quot;=&gt;\\&quot;crop\\&quot;),\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;pixelate_region\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;ocr_text\\&quot;)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().width(1300).height(900).gravity(\\&quot;south_east\\&quot;).crop(\\&quot;crop\\&quot;).chain() .effect(\\&quot;pixelate_region\\&quot;).gravity(\\&quot;ocr_text\\&quot;)).imageTag(\\&quot;highway_sign.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .width(1300).height(900).gravity(\\&quot;south_east\\&quot;).crop(\\&quot;crop\\&quot;).chain()\\n  .effect(\\&quot;pixelate_region\\&quot;).gravity(\\&quot;ocr_text\\&quot;)).imageTag(\\&quot;highway_sign.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;highway_sign.jpg\\&quot;, transformation: [ {width: 1300, height: 900, gravity: \\&quot;south_east\\&quot;, crop: \\&quot;crop\\&quot;}, {effect: \\&quot;pixelate_region\\&quot;, gravity: \\&quot;ocr_text\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;highway_sign.jpg\\&quot;, transformation: [\\n  {width: 1300, height: 900, gravity: \\&quot;south_east\\&quot;, crop: \\&quot;crop\\&quot;},\\n  {effect: \\&quot;pixelate_region\\&quot;, gravity: \\&quot;ocr_text\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(1300).Height(900).Gravity(\\&quot;south_east\\&quot;).Crop(\\&quot;crop\\&quot;).Chain() .Effect(\\&quot;pixelate_region\\&quot;).Gravity(\\&quot;ocr_text\\&quot;)).BuildImageTag(\\&quot;highway_sign.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Width(1300).Height(900).Gravity(\\&quot;south_east\\&quot;).Crop(\\&quot;crop\\&quot;).Chain()\\n  .Effect(\\&quot;pixelate_region\\&quot;).Gravity(\\&quot;ocr_text\\&quot;)).BuildImageTag(\\&quot;highway_sign.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;highway_sign.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.crop().width(1300)\\n.height(900)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.southEast()))\\n\\t)\\n\\t.effect(Effect.pixelate()\\n\\t.region(\\n\\tRegion.ocr())\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;highway_sign.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.crop().width(1300)\\n.height(900)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.southEast()))\\n\\t)\\n\\t.effect(Effect.pixelate()\\n\\t.region(\\n\\tRegion.ocr())\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(1300).setHeight(900).setGravity(\\&quot;south_east\\&quot;).setCrop(\\&quot;crop\\&quot;).chain() .setEffect(\\&quot;pixelate_region\\&quot;).setGravity(\\&quot;ocr_text\\&quot;)).generate(\\&quot;highway_sign.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setWidth(1300).setHeight(900).setGravity(\\&quot;south_east\\&quot;).setCrop(\\&quot;crop\\&quot;).chain()\\n  .setEffect(\\&quot;pixelate_region\\&quot;).setGravity(\\&quot;ocr_text\\&quot;)).generate(\\&quot;highway_sign.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().width(1300).height(900).gravity(\\&quot;south_east\\&quot;).crop(\\&quot;crop\\&quot;).chain() .effect(\\&quot;pixelate_region\\&quot;).gravity(\\&quot;ocr_text\\&quot;)).generate(\\&quot;highway_sign.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .width(1300).height(900).gravity(\\&quot;south_east\\&quot;).crop(\\&quot;crop\\&quot;).chain()\\n  .effect(\\&quot;pixelate_region\\&quot;).gravity(\\&quot;ocr_text\\&quot;)).generate(\\&quot;highway_sign.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;highway_sign.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.crop().width(1300)\\n.height(900)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.southEast()))\\n\\t)\\n\\t.effect(Effect.pixelate()\\n\\t.region(\\n\\tRegion.ocr())\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;highway_sign.jpg&#039;).transformation(Transformation()\\n\\t.resize(Resize.crop().width(1300)\\n.height(900)\\n\\t.gravity(\\n\\tGravity.compass(\\n\\tCompass.southEast()))\\n\\t)\\n\\t.effect(Effect.pixelate()\\n\\t.region(\\n\\tRegion.ocr())\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;highway_sign.jpg\\&quot;)\\n\\t resize(Resize.crop() { width(1300)\\n height(900)\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.southEast()))\\n\\t })\\n\\t effect(Effect.pixelate() {\\n\\t region(\\n\\tRegion.ocr())\\n\\t }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;highway_sign.jpg\\&quot;)\\n\\t resize(Resize.crop() { width(1300)\\n height(900)\\n\\t gravity(\\n\\tGravity.compass(\\n\\tCompass.southEast()))\\n\\t })\\n\\t effect(Effect.pixelate() {\\n\\t region(\\n\\tRegion.ocr())\\n\\t }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;highway_sign.jpg\\&quot;, {transformation: [ {width: 1300, height: 900, gravity: \\&quot;south_east\\&quot;, crop: \\&quot;crop\\&quot;}, {effect: \\&quot;pixelate_region\\&quot;, gravity: \\&quot;ocr_text\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;highway_sign.jpg\\&quot;, {transformation: [\\n  {width: 1300, height: 900, gravity: \\&quot;south_east\\&quot;, crop: \\&quot;crop\\&quot;},\\n  {effect: \\&quot;pixelate_region\\&quot;, gravity: \\&quot;ocr_text\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;highway_sign.jpg\\&quot;)\\n  .resize(\\n    crop()\\n      .width(1300)\\n      .height(900)\\n      .gravity(compass(\\&quot;south_east\\&quot;))\\n  )\\n  .effect(pixelate().region(ocr()));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/c_crop,w_1300,h_900,g_south_east\\\/e_pixelate_region,g_ocr_text\\\/highway_sign.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;crop_mode&quot;:&quot;crop&quot;,&quot;width&quot;:&quot;1300&quot;,&quot;height&quot;:&quot;900&quot;,&quot;gravity&quot;:&quot;south_east&quot;},{&quot;effect&quot;:&quot;pixelate_region&quot;,&quot;gravity&quot;:&quot;ocr_text&quot;}],&quot;transformation_string&quot;:&quot;c_crop,w_1300,h_900,g_south_east\\\/e_pixelate_region,g_ocr_text&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;highway_sign.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><\/p>\n<p>Stay tuned to learn how you can apply these same capabilities to your own site or app.<\/p>\n<h2>A winning combination: leading OCR technology + dynamic image transformation functionality<\/h2>\n<p>Extracting text from images programmatically is a technology that has existed at some level for many years and is usually referred to as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Optical_character_recognition\">OCR<\/a> (Optical Character Recognition).<\/p>\n<p>In recent years, advanced systems have been developed that are capable of producing a high degree of recognition accuracy for most fonts and languages. Although no system is 100% accurate, the better ones are getting close.<\/p>\n<a href=\"https:\/\/cloudinary.com\/addons\" target =\"_blank\">\n<img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_80\/ocr_icon.png\" alt=\"Text Detection and Extraction add-on\" style=\"float:left;width:80px;height:75px;margin:5px 20px 0px 0px;\"><\/a>\nAt Cloudinary, our mission is to offer a comprehensive solution for all elements of image and media management, enabling web and app developers to invest their full focus on the main purpose of their own site, or app. That\u2019s why we decided to offer our new [OCR Text Detection and Extraction add-on](https:\/\/cloudinary.com\/addons), which streamlines our extensive image transformation capabilities with one of the most advanced and precise OCR text extraction engines: Google\u2019s [Cloud Vision](https:\/\/cloud.google.com\/vision\/).\n<h2>Some real use cases<\/h2>\n<h4>Using image overlays to cover unwanted text<\/h4>\n<p>Suppose your website helps people find their next dream car. It\u2019s a free service for the buyers of course. It\u2019s also fair for the sellers who list all their cars for free, and pay a commission only if the car sells through your site. But some dealers forget to follow the website policy, and they list their direct phone number on the image. A problem? Not with the new OCR Text Recognition and Extraction add-on. Take a look at how easy it is to cover any embedded text in an uploaded image using a simple OCR transformation.<\/p>\n<p>For example, the dynamic transformation URL (and corresponding SDK code) shown below performs OCR detection and adds an an image as an overlay on top of any detected text. Everything is done on-the-fly in the cloud by simply adding 2 parameters to the code that builds the URL:<\/p>\n<ul>\n<li>Set the <code>overlay<\/code> parameter to the <code>quikcar_logo<\/code> image (<code>l_quikcar_logo<\/code> in the URL)<\/li>\n<li>Set the <code>gravity<\/code> (location for the overlay) to <code>ocr_text<\/code> (<code>g_ocr_text<\/code> in the URL)<\/li>\n<\/ul>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;jeepsale.jpg\\&quot;, {overlay: \\&quot;quikcar_logo\\&quot;, flags: \\&quot;region_relative\\&quot;, width: \\&quot;1.4\\&quot;, gravity: \\&quot;ocr_text\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;jeepsale.jpg\\&quot;, {overlay: \\&quot;quikcar_logo\\&quot;, flags: \\&quot;region_relative\\&quot;, width: \\&quot;1.4\\&quot;, gravity: \\&quot;ocr_text\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;jeepsale.jpg\\&quot; &gt; &lt;Transformation overlay=\\&quot;quikcar_logo\\&quot; flags=\\&quot;region_relative\\&quot; width=\\&quot;1.4\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;jeepsale.jpg\\&quot; &gt;\\n\\t&lt;Transformation overlay=\\&quot;quikcar_logo\\&quot; flags=\\&quot;region_relative\\&quot; width=\\&quot;1.4\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;jeepsale.jpg\\&quot; &gt; &lt;cld-transformation :overlay=\\&quot;quikcar_logo\\&quot; flags=\\&quot;region_relative\\&quot; width=\\&quot;1.4\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;jeepsale.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;quikcar_logo\\&quot; flags=\\&quot;region_relative\\&quot; width=\\&quot;1.4\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;jeepsale.jpg\\&quot; &gt; &lt;cl-transformation overlay=\\&quot;quikcar_logo\\&quot; flags=\\&quot;region_relative\\&quot; width=\\&quot;1.4\\&quot; gravity=\\&quot;ocr_text\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;jeepsale.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation overlay=\\&quot;quikcar_logo\\&quot; flags=\\&quot;region_relative\\&quot; width=\\&quot;1.4\\&quot; gravity=\\&quot;ocr_text\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;jeepsale.jpg&#039;, {overlay: new cloudinary.Layer().publicId(\\&quot;quikcar_logo\\&quot;), flags: \\&quot;region_relative\\&quot;, width: \\&quot;1.4\\&quot;, gravity: \\&quot;ocr_text\\&quot;}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;jeepsale.jpg&#039;, {overlay: new cloudinary.Layer().publicId(\\&quot;quikcar_logo\\&quot;), flags: \\&quot;region_relative\\&quot;, width: \\&quot;1.4\\&quot;, gravity: \\&quot;ocr_text\\&quot;}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).image(overlay=\\&quot;quikcar_logo\\&quot;, flags=\\&quot;region_relative\\&quot;, width=\\&quot;1.4\\&quot;, gravity=\\&quot;ocr_text\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).image(overlay=\\&quot;quikcar_logo\\&quot;, flags=\\&quot;region_relative\\&quot;, width=\\&quot;1.4\\&quot;, gravity=\\&quot;ocr_text\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;jeepsale.jpg&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;quikcar_logo\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(1.4)\\n\\t-&gt;regionRelative()\\n\\t))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::focusOn(\\n\\tFocusOn::ocr()))\\n\\t)\\n\\t);&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;jeepsale.jpg&#039;))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::image(\\&quot;quikcar_logo\\&quot;)\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()-&gt;width(1.4)\\n\\t-&gt;regionRelative()\\n\\t))\\n\\t)\\n\\t-&gt;position((new Position())\\n\\t-&gt;gravity(\\n\\tGravity::focusOn(\\n\\tFocusOn::ocr()))\\n\\t)\\n\\t);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;jeepsale.jpg\\&quot;, array(\\&quot;overlay\\&quot;=&gt;\\&quot;quikcar_logo\\&quot;, \\&quot;flags\\&quot;=&gt;\\&quot;region_relative\\&quot;, \\&quot;width\\&quot;=&gt;\\&quot;1.4\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;ocr_text\\&quot;))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;jeepsale.jpg\\&quot;, array(\\&quot;overlay\\&quot;=&gt;\\&quot;quikcar_logo\\&quot;, \\&quot;flags\\&quot;=&gt;\\&quot;region_relative\\&quot;, \\&quot;width\\&quot;=&gt;\\&quot;1.4\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;ocr_text\\&quot;))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().overlay(new Layer().publicId(\\&quot;quikcar_logo\\&quot;)).flags(\\&quot;region_relative\\&quot;).width(1.4).gravity(\\&quot;ocr_text\\&quot;)).imageTag(\\&quot;jeepsale.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().overlay(new Layer().publicId(\\&quot;quikcar_logo\\&quot;)).flags(\\&quot;region_relative\\&quot;).width(1.4).gravity(\\&quot;ocr_text\\&quot;)).imageTag(\\&quot;jeepsale.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;jeepsale.jpg\\&quot;, overlay: \\&quot;quikcar_logo\\&quot;, flags: \\&quot;region_relative\\&quot;, width: 1.4, gravity: \\&quot;ocr_text\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;jeepsale.jpg\\&quot;, overlay: \\&quot;quikcar_logo\\&quot;, flags: \\&quot;region_relative\\&quot;, width: 1.4, gravity: \\&quot;ocr_text\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Overlay(new Layer().PublicId(\\&quot;quikcar_logo\\&quot;)).Flags(\\&quot;region_relative\\&quot;).Width(1.4).Gravity(\\&quot;ocr_text\\&quot;)).BuildImageTag(\\&quot;jeepsale.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Overlay(new Layer().PublicId(\\&quot;quikcar_logo\\&quot;)).Flags(\\&quot;region_relative\\&quot;).Width(1.4).Gravity(\\&quot;ocr_text\\&quot;)).BuildImageTag(\\&quot;jeepsale.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;jeepsale.jpg&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;quikcar_logo\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(1.4)\\n\\t.regionRelative()\\n\\t))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.focusOn(\\n\\tFocusOn.ocr()))\\n\\t)\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;jeepsale.jpg&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;quikcar_logo\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(1.4)\\n\\t.regionRelative()\\n\\t))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.focusOn(\\n\\tFocusOn.ocr()))\\n\\t)\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setOverlay(\\&quot;quikcar_logo\\&quot;).setFlags(\\&quot;region_relative\\&quot;).setWidth(1.4).setGravity(\\&quot;ocr_text\\&quot;)).generate(\\&quot;jeepsale.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setOverlay(\\&quot;quikcar_logo\\&quot;).setFlags(\\&quot;region_relative\\&quot;).setWidth(1.4).setGravity(\\&quot;ocr_text\\&quot;)).generate(\\&quot;jeepsale.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().overlay(new Layer().publicId(\\&quot;quikcar_logo\\&quot;)).flags(\\&quot;region_relative\\&quot;).width(1.4).gravity(\\&quot;ocr_text\\&quot;)).generate(\\&quot;jeepsale.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().overlay(new Layer().publicId(\\&quot;quikcar_logo\\&quot;)).flags(\\&quot;region_relative\\&quot;).width(1.4).gravity(\\&quot;ocr_text\\&quot;)).generate(\\&quot;jeepsale.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;jeepsale.jpg&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;quikcar_logo\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(1.4)\\n\\t.regionRelative()\\n\\t))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.focusOn(\\n\\tFocusOn.ocr()))\\n\\t)\\n\\t));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;jeepsale.jpg&#039;).transformation(Transformation()\\n\\t.overlay(Overlay.source(\\n\\tSource.image(\\&quot;quikcar_logo\\&quot;)\\n\\t.transformation(new Transformation()\\n\\t.resize(Resize.scale().width(1.4)\\n\\t.regionRelative()\\n\\t))\\n\\t)\\n\\t.position(Position()\\n\\t.gravity(\\n\\tGravity.focusOn(\\n\\tFocusOn.ocr()))\\n\\t)\\n\\t));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;jeepsale.jpg\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;quikcar_logo\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(1.4F)\\n\\t regionRelative()\\n\\t }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.focusOn(\\n\\tFocusOn.ocr()))\\n\\t })\\n\\t }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;jeepsale.jpg\\&quot;)\\n\\t overlay(Overlay.source(\\n\\tSource.image(\\&quot;quikcar_logo\\&quot;) {\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale() { width(1.4F)\\n\\t regionRelative()\\n\\t }) })\\n\\t }) {\\n\\t position(Position() {\\n\\t gravity(\\n\\tGravity.focusOn(\\n\\tFocusOn.ocr()))\\n\\t })\\n\\t }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;jeepsale.jpg\\&quot;, {overlay: new cloudinary.Layer().publicId(\\&quot;quikcar_logo\\&quot;), flags: \\&quot;region_relative\\&quot;, width: \\&quot;1.4\\&quot;, gravity: \\&quot;ocr_text\\&quot;})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;jeepsale.jpg\\&quot;, {overlay: new cloudinary.Layer().publicId(\\&quot;quikcar_logo\\&quot;), flags: \\&quot;region_relative\\&quot;, width: \\&quot;1.4\\&quot;, gravity: \\&quot;ocr_text\\&quot;})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;jeepsale.jpg\\&quot;).overlay(\\n  source(\\n    image(\\&quot;quikcar_logo\\&quot;).transformation(\\n      new Transformation().resize(scale().width(1.4).regionRelative())\\n    )\\n  ).position(new Position().gravity(focusOn(ocr())))\\n);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/l_quikcar_logo,fl_region_relative,w_1.4,g_ocr_text\\\/jeepsale.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;overlay&quot;:&quot;quikcar_logo&quot;,&quot;flags&quot;:&quot;region_relative&quot;,&quot;width&quot;:&quot;1.4&quot;,&quot;gravity&quot;:&quot;ocr_text&quot;}],&quot;transformation_string&quot;:&quot;l_quikcar_logo,fl_region_relative,w_1.4,g_ocr_text&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;jeepsale.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><\/p>\n<div style=\"clear: both; \">\n<\/div>\n<div style=\"text-align:center;\">\n<span style=\"display:inline-block;vertical-align:top;margin-bottom: 20px\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/jeepsale.jpg\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_500\/jeepsale.jpg\" alt=\"Original image with out text overlay\" title=\"Originally uploaded image\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>Originally uploaded image<\/i><\/small>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/l_quikcar_logo,fl_region_relative,w_1.4,g_ocr_text\/jeepsale.jpg\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/l_quikcar_logo,fl_region_relative,w_1.4,g_ocr_text\/w_500\/jeepsale.jpg\" alt=\"Image that is immediately displayed on your site with your logo covering the detected text\" title=\"Image that is immediately displayed on your site with your logo covering the detected text\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>Image that is immediately displayed on your site with logo overlay<\/i><\/small>\n<\/span>\n<\/div>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n_Photo Credit: [Sawinery.net](https:\/\/www.sawinery.net\/)_\n<h4>Blurring out a brand name<\/h4>\n<p>You maintain a blog where you and other users post regularly. To enhance engagement,  you make sure to embed lots of interesting images in every article. You don\u2019t want anybody to think that your posts are commercially biased, but these days, (almost) everything is branded. Using Cloudinary\u2019s OCR add-on, it again takes just one line of SDK code (or a manually built URL) with a few parameters to blur out that brand name.<\/p>\n<p>In this case, we take advantage of the <code>blur_region<\/code> effect at its top blurring strength (<code>2000<\/code>), and again use that <code>ocr_text<\/code> gravity so that all detected text regions are blurred:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;piano.jpg\\&quot;, {transformation: [ {effect: \\&quot;blur_region:2000\\&quot;, gravity: \\&quot;ocr_text\\&quot;}, {width: 500, crop: \\&quot;scale\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;piano.jpg\\&quot;, {transformation: [\\n  {effect: \\&quot;blur_region:2000\\&quot;, gravity: \\&quot;ocr_text\\&quot;},\\n  {width: 500, crop: \\&quot;scale\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;piano.jpg\\&quot; &gt; &lt;Transformation effect=\\&quot;blur_region:2000\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt; &lt;Transformation width=\\&quot;500\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;piano.jpg\\&quot; &gt;\\n\\t&lt;Transformation effect=\\&quot;blur_region:2000\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt;\\n\\t&lt;Transformation width=\\&quot;500\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;piano.jpg\\&quot; &gt; &lt;cld-transformation effect=\\&quot;blur_region:2000\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt; &lt;cld-transformation width=\\&quot;500\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;piano.jpg\\&quot; &gt;\\n\\t&lt;cld-transformation effect=\\&quot;blur_region:2000\\&quot; gravity=\\&quot;ocr_text\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation width=\\&quot;500\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;piano.jpg\\&quot; &gt; &lt;cl-transformation effect=\\&quot;blur_region:2000\\&quot; gravity=\\&quot;ocr_text\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation width=\\&quot;500\\&quot; crop=\\&quot;scale\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;piano.jpg\\&quot; &gt;\\n\\t&lt;cl-transformation effect=\\&quot;blur_region:2000\\&quot; gravity=\\&quot;ocr_text\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation width=\\&quot;500\\&quot; crop=\\&quot;scale\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;piano.jpg&#039;, {transformation: [ {effect: \\&quot;blur_region:2000\\&quot;, gravity: \\&quot;ocr_text\\&quot;}, {width: 500, crop: \\&quot;scale\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;piano.jpg&#039;, {transformation: [\\n  {effect: \\&quot;blur_region:2000\\&quot;, gravity: \\&quot;ocr_text\\&quot;},\\n  {width: 500, crop: \\&quot;scale\\&quot;}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;piano.jpg\\&quot;).image(transformation=[ {&#039;effect&#039;: \\&quot;blur_region:2000\\&quot;, &#039;gravity&#039;: \\&quot;ocr_text\\&quot;}, {&#039;width&#039;: 500, &#039;crop&#039;: \\&quot;scale\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;piano.jpg\\&quot;).image(transformation=[\\n  {&#039;effect&#039;: \\&quot;blur_region:2000\\&quot;, &#039;gravity&#039;: \\&quot;ocr_text\\&quot;},\\n  {&#039;width&#039;: 500, &#039;crop&#039;: \\&quot;scale\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;piano.jpg&#039;))\\n\\t-&gt;effect(Effect::blur()-&gt;strength(2000)\\n\\t-&gt;region(\\n\\tRegion::ocr())\\n\\t)\\n\\t-&gt;resize(Resize::scale()-&gt;width(500));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;piano.jpg&#039;))\\n\\t-&gt;effect(Effect::blur()-&gt;strength(2000)\\n\\t-&gt;region(\\n\\tRegion::ocr())\\n\\t)\\n\\t-&gt;resize(Resize::scale()-&gt;width(500));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;piano.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;effect\\&quot;=&gt;\\&quot;blur_region:2000\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;ocr_text\\&quot;), array(\\&quot;width\\&quot;=&gt;500, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;piano.jpg\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;effect\\&quot;=&gt;\\&quot;blur_region:2000\\&quot;, \\&quot;gravity\\&quot;=&gt;\\&quot;ocr_text\\&quot;),\\n  array(\\&quot;width\\&quot;=&gt;500, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().effect(\\&quot;blur_region:2000\\&quot;).gravity(\\&quot;ocr_text\\&quot;).chain() .width(500).crop(\\&quot;scale\\&quot;)).imageTag(\\&quot;piano.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .effect(\\&quot;blur_region:2000\\&quot;).gravity(\\&quot;ocr_text\\&quot;).chain()\\n  .width(500).crop(\\&quot;scale\\&quot;)).imageTag(\\&quot;piano.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;piano.jpg\\&quot;, transformation: [ {effect: \\&quot;blur_region:2000\\&quot;, gravity: \\&quot;ocr_text\\&quot;}, {width: 500, crop: \\&quot;scale\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;piano.jpg\\&quot;, transformation: [\\n  {effect: \\&quot;blur_region:2000\\&quot;, gravity: \\&quot;ocr_text\\&quot;},\\n  {width: 500, crop: \\&quot;scale\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Effect(\\&quot;blur_region:2000\\&quot;).Gravity(\\&quot;ocr_text\\&quot;).Chain() .Width(500).Crop(\\&quot;scale\\&quot;)).BuildImageTag(\\&quot;piano.jpg\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Effect(\\&quot;blur_region:2000\\&quot;).Gravity(\\&quot;ocr_text\\&quot;).Chain()\\n  .Width(500).Crop(\\&quot;scale\\&quot;)).BuildImageTag(\\&quot;piano.jpg\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;piano.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.blur().strength(2000)\\n\\t.region(\\n\\tRegion.ocr())\\n\\t)\\n\\t.resize(Resize.scale().width(500)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;piano.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.blur().strength(2000)\\n\\t.region(\\n\\tRegion.ocr())\\n\\t)\\n\\t.resize(Resize.scale().width(500)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setEffect(\\&quot;blur_region:2000\\&quot;).setGravity(\\&quot;ocr_text\\&quot;).chain() .setWidth(500).setCrop(\\&quot;scale\\&quot;)).generate(\\&quot;piano.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setEffect(\\&quot;blur_region:2000\\&quot;).setGravity(\\&quot;ocr_text\\&quot;).chain()\\n  .setWidth(500).setCrop(\\&quot;scale\\&quot;)).generate(\\&quot;piano.jpg\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().effect(\\&quot;blur_region:2000\\&quot;).gravity(\\&quot;ocr_text\\&quot;).chain() .width(500).crop(\\&quot;scale\\&quot;)).generate(\\&quot;piano.jpg\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .effect(\\&quot;blur_region:2000\\&quot;).gravity(\\&quot;ocr_text\\&quot;).chain()\\n  .width(500).crop(\\&quot;scale\\&quot;)).generate(\\&quot;piano.jpg\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;piano.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.blur().strength(2000)\\n\\t.region(\\n\\tRegion.ocr())\\n\\t)\\n\\t.resize(Resize.scale().width(500)));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;piano.jpg&#039;).transformation(Transformation()\\n\\t.effect(Effect.blur().strength(2000)\\n\\t.region(\\n\\tRegion.ocr())\\n\\t)\\n\\t.resize(Resize.scale().width(500)));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;piano.jpg\\&quot;)\\n\\t effect(Effect.blur() { strength(2000)\\n\\t region(\\n\\tRegion.ocr())\\n\\t })\\n\\t resize(Resize.scale() { width(500) }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;piano.jpg\\&quot;)\\n\\t effect(Effect.blur() { strength(2000)\\n\\t region(\\n\\tRegion.ocr())\\n\\t })\\n\\t resize(Resize.scale() { width(500) }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;piano.jpg\\&quot;, {transformation: [ {effect: \\&quot;blur_region:2000\\&quot;, gravity: \\&quot;ocr_text\\&quot;}, {width: 500, crop: \\&quot;scale\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;piano.jpg\\&quot;, {transformation: [\\n  {effect: \\&quot;blur_region:2000\\&quot;, gravity: \\&quot;ocr_text\\&quot;},\\n  {width: 500, crop: \\&quot;scale\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;piano.jpg\\&quot;)\\n  .effect(\\n    blur()\\n      .strength(2000)\\n      .region(ocr())\\n  )\\n  .resize(scale().width(500));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/e_blur_region:2000,g_ocr_text\\\/w_500\\\/piano.jpg&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;effect&quot;:&quot;blur_region:2000&quot;,&quot;gravity&quot;:&quot;ocr_text&quot;},{&quot;width&quot;:&quot;500&quot;}],&quot;transformation_string&quot;:&quot;e_blur_region:2000,g_ocr_text\\\/w_500&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;piano.jpg&quot;,&quot;extension&quot;:&quot;jpg&quot;,&quot;format&quot;:&quot;jpg&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><\/p>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<div style=\"text-align:center;\">\n<span style=\"display:inline-block;vertical-align:top;margin-bottom: 20px\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/piano.jpg\"  target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_350\/piano.jpg\" alt=\"Original, unblurred image\" title=\"Original, unblurred image\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>Original, unblurred image<\/i><\/small>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;margin-bottom: 20px\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/e_blur_region:2000,g_ocr_text\/piano.jpg\"  target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/e_blur_region:2000,g_ocr_text\/w_350\/piano.jpg\" alt=\"Blurred brand name text\" title=\"Blurred brand name text\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>Blurred brand name text<\/i><\/small>\n<\/span>\n<\/div>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<h4>Advanced processing using extracted text<\/h4>\n<p>Say that your website is based on user generated content and your income is based on click-through rates. Your users are of-course also interested in maximizing views of their posts. It is a known and proven fact that images catch the eyes of users and increase engagement. But it\u2019s also known that images containing significant amounts of text are less engaging and may harm the overall experience.  For example, Facebook limits the exposure of ads that are text-heavy.<\/p>\n<p>Luckily, you can help your users to avoid uploading images with excessive text content by using the OCR add-on to analyze the percentage of an image that contains text.<\/p>\n<p>When you include the <code>ocr<\/code> parameter in your upload command, the JSON response includes all of the detected text and the exact bounding boxes coordinates of each word or text element. Combining this data with some simple math, you can write some simple code to:<\/p>\n<ul>\n<li>Allow images with less than 15% to be uploaded freely.<\/li>\n<li>Provide a warning for images with 15%-30% text, recommending that they use a less text-heavy image, but still allow them to continue if they choose.<\/li>\n<li>Reject images with more than 30% text.<\/li>\n<\/ul>\n<p>Here\u2019s a look at an excerpt from an upload response showing the bounding box of an individual text element extracted from an image:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">              {\n                <span class=\"hljs-string\">\"boundingPoly\"<\/span>: {\n                  <span class=\"hljs-string\">\"vertices\"<\/span>: &#91;\n                    {\n                      <span class=\"hljs-string\">\"y\"<\/span>: <span class=\"hljs-number\">22<\/span>,\n                      <span class=\"hljs-string\">\"x\"<\/span>: <span class=\"hljs-number\">760<\/span>\n                    },\n                    {\n                      <span class=\"hljs-string\">\"y\"<\/span>: <span class=\"hljs-number\">22<\/span>,\n                      <span class=\"hljs-string\">\"x\"<\/span>: <span class=\"hljs-number\">1039<\/span>\n                    },\n                    {\n                      <span class=\"hljs-string\">\"y\"<\/span>: <span class=\"hljs-number\">90<\/span>,\n                      <span class=\"hljs-string\">\"x\"<\/span>: <span class=\"hljs-number\">1039<\/span>\n                    },\n                    {\n                      <span class=\"hljs-string\">\"y\"<\/span>: <span class=\"hljs-number\">90<\/span>,\n                      <span class=\"hljs-string\">\"x\"<\/span>: <span class=\"hljs-number\">760<\/span>\n                    }\n                  ]\n                },\n                <span class=\"hljs-string\">\"description\"<\/span>: <span class=\"hljs-string\">\"Imagine\"<\/span>\n              },\n              {\n                <span class=\"hljs-string\">\"boundingPoly\"<\/span>: {\n                  \u2026\n                  \u2026\n                  \u2026\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>And here\u2019s some simple sample code (using Ruby on Rails) that accomplishes the text percentage validation described above by calculating the space taken by each of the individual bounding boxes of all text detected in an image:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\"><span class=\"hljs-keyword\">if<\/span> result&#91;<span class=\"hljs-string\">'info'<\/span>]&#91;<span class=\"hljs-string\">'ocr'<\/span>]&#91;<span class=\"hljs-string\">'adv_ocr'<\/span>]&#91;<span class=\"hljs-string\">'status'<\/span>] == <span class=\"hljs-string\">'complete'<\/span>\n  data = result&#91;<span class=\"hljs-string\">'info'<\/span>]&#91;<span class=\"hljs-string\">'ocr'<\/span>]&#91;<span class=\"hljs-string\">'adv_ocr'<\/span>]&#91;<span class=\"hljs-string\">'data'<\/span>]\n  boxes = data.first&#91;<span class=\"hljs-string\">\"textAnnotations\"<\/span>]&#91;<span class=\"hljs-number\">1.<\/span>.<span class=\"hljs-number\">-1<\/span>].map{|poly| poly&#91;<span class=\"hljs-string\">\"boundingPoly\"<\/span>]\n       &#91;<span class=\"hljs-string\">\"vertices\"<\/span>]}.map{|vertices| vertices.values_at(<span class=\"hljs-number\">0<\/span>,<span class=\"hljs-number\">2<\/span>)}\n  areas = boxes.map{|box| (box.first&#91;<span class=\"hljs-string\">\"x\"<\/span>]-box.second&#91;<span class=\"hljs-string\">\"x\"<\/span>])\n       .abs * (box.first&#91;<span class=\"hljs-string\">\"y\"<\/span>]-box.second&#91;<span class=\"hljs-string\">\"y\"<\/span>]).abs}\n  total_areas = areas.sum\n  coverage = total_areas.to_f \/ (result&#91;<span class=\"hljs-string\">\"width\"<\/span>] * result&#91;<span class=\"hljs-string\">\"height\"<\/span>]) * <span class=\"hljs-number\">100<\/span>\n\nputs <span class=\"hljs-keyword\">case<\/span>\n  when coverage &lt; <span class=\"hljs-number\">15<\/span>\n    <span class=\"hljs-string\">\"Only #{coverage.round(2)}% of your image contains text. \n        This is a valid image!\"<\/span>\n  when coverage &lt; <span class=\"hljs-number\">30<\/span>\n    <span class=\"hljs-string\">\"#{coverage.round(2)}% of your image contains text. For better engagement, \n        it is recommended to upload an image with less text.\"<\/span>\n  <span class=\"hljs-keyword\">else<\/span>\n    <span class=\"hljs-string\">\"We're sorry. #{coverage.round(2)}% of your image contains text. \n        Please use another image.\"<\/span>\n  end\nend\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>If a customer uploaded the first image below, the above code would return 12.54% and thus would be allowed to continue, the second image would return ~16%, and thus would receive a warning, but the third image would return nearly 35%, and would be (politely) rejected.<\/p>\n<div style=\"clear: both; \">\n<\/div>\n<div style=\"text-align:center;\">\n<span style=\"display:inline-block;vertical-align:top;margin-bottom: 20px\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/startupsign.jpg\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/h_200\/startupsign.jpg\" alt=\"extracted text found in 12.54% of image\" title=\"extracted text found in 12.54% of image\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>12.54% text<\/i><\/small>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/hotel_ad.jpg\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/h_200\/hotel_ad.jpg\" alt=\"extracted text found in 16.36% of image\" title=\"extracted text found in 16.36% of image\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>16.36% text<\/i><\/small>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/buzzwords.jpg\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/h_200\/buzzwords.jpg\" alt=\"extracted text found in 34.87% of image\" title=\"extracted text found in 34.87% of image\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<small style=\"margin-right: 10px;display:block;\"><i>34.87% text<\/i><\/small>\n<\/span>\n<\/div>\n<div style=\"clear: both; margin-bottom: 10px\">\n<\/div>\n<h2>In a word<\/h2>\n<p>In this article, we\u2019ve demonstrated a few ways you can use the OCR Text Recognition and Extraction add-on to automatically blur, pixelate, overlay, and extract text from your images.<\/p>\n<p>Want to know more? For a deeper look at the add-on\u2019s abilities and additional use-case scenarios with sample code, have a look at the <a href=\"https:\/\/cloudinary.com\/documentation\/ocr_text_detection_and_extraction_addon\">add-on documentation<\/a>.<\/p>\n<p>Ready to give it a try? If you aren\u2019t already a Cloudinary customer, you are welcome to <a href=\"https:\/\/cloudinary.com\/users\/register\/free\">sign up for a free account<\/a> and try the add-on along with the rest of the Cloudinary features.<\/p>\n<p>Have some great ideas for how to make use of the OCR Text Detection and Extraction add-on in your site or app? We\u2019d be happy to hear what you think and appreciate any feedback.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21512,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[165],"class_list":["post-21511","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-image-transformation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to use OCR Text Recognition to automatically transform images<\/title>\n<meta name=\"description\" content=\"Learn how to detect and extract text from images, process it, and automatically apply blur, pixelate, text overlay or crop effects.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to use OCR Text Recognition to automatically transform images\" \/>\n<meta property=\"og:description\" content=\"Learn how to detect and extract text from images, process it, and automatically apply blur, pixelate, text overlay or crop effects.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-19T16:16:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1473\" \/>\n\t<meta property=\"og:image:height\" content=\"810\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"How to use OCR Text Recognition to automatically transform images\",\"datePublished\":\"2017-04-19T16:16:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images\"},\"wordCount\":10,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA\",\"keywords\":[\"Image Transformation\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2017\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images\",\"url\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images\",\"name\":\"How to use OCR Text Recognition to automatically transform images\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA\",\"datePublished\":\"2017-04-19T16:16:44+00:00\",\"description\":\"Learn how to detect and extract text from images, process it, and automatically apply blur, pixelate, text overlay or crop effects.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA\",\"width\":1473,\"height\":810},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to use OCR Text Recognition to automatically transform images\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to use OCR Text Recognition to automatically transform images","description":"Learn how to detect and extract text from images, process it, and automatically apply blur, pixelate, text overlay or crop effects.","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:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images","og_locale":"en_US","og_type":"article","og_title":"How to use OCR Text Recognition to automatically transform images","og_description":"Learn how to detect and extract text from images, process it, and automatically apply blur, pixelate, text overlay or crop effects.","og_url":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images","og_site_name":"Cloudinary Blog","article_published_time":"2017-04-19T16:16:44+00:00","og_image":[{"width":1473,"height":810,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images"},"author":{"name":"","@id":""},"headline":"How to use OCR Text Recognition to automatically transform images","datePublished":"2017-04-19T16:16:44+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images"},"wordCount":10,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA","keywords":["Image Transformation"],"inLanguage":"en-US","copyrightYear":"2017","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images","url":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images","name":"How to use OCR Text Recognition to automatically transform images","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA","datePublished":"2017-04-19T16:16:44+00:00","description":"Learn how to detect and extract text from images, process it, and automatically apply blur, pixelate, text overlay or crop effects.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA","width":1473,"height":810},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/how_to_automatically_blur_pixelate_and_process_detected_text_in_your_images#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to use OCR Text Recognition to automatically transform images"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649724382\/Web_Assets\/blog\/blog_ocr_top\/blog_ocr_top.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21511"}],"version-history":[{"count":0,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21511\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21512"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}