{"id":557579,"date":"2026-09-15T12:10:38","date_gmt":"2026-09-15T12:10:38","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=557579"},"modified":"2026-09-15T12:10:44","modified_gmt":"2026-09-15T12:10:44","slug":"erpnext-product-image-search","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/","title":{"rendered":"User Guide of ERPNext Product Image Search"},"content":{"rendered":"<p><strong>ERPNext Product Image Search<\/strong> lets shoppers find products by photo. Also, it works with any <a href=\"https:\/\/github.com\/frappe\/webshop\" target=\"_blank\" rel=\"noopener\">Frappe Webshop<\/a> store.<\/p>\n<p>Shoppers often know what a product looks like but not what it is called. For example, they may have a photo but no product name, SKU, or brand.<\/p>\n<p>When text search returns nothing, they leave. So the Website Product Image Search app adds a camera icon to your search bar, and customers see similar products instantly.<\/p>\n<p>In this guide, you will first install ERPNext Product Image Search. Then you will configure it, generate embeddings, and fix common issues.<\/p>\n<p>New to the storefront? In that case, first read the official guide to <a href=\"https:\/\/docs.frappe.io\/erpnext\/set_up_e_commerce\" target=\"_blank\" rel=\"noopener\">setting up e-commerce in ERPNext<\/a>.<\/p>\n<h2>How ERPNext Product Image Search Works<\/h2>\n<p>The app relies on <strong>image embeddings<\/strong>. In other words, an embedding is a list of numbers that describes what an image looks like.<\/p>\n<p>First, the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Residual_neural_network\" target=\"_blank\" rel=\"noopener\">ResNet50<\/a> deep learning model creates an embedding for each product image. Then the app saves it as a <strong>Product Image Embedding<\/strong> record.<\/p>\n<p>When a shopper uploads a photo, the app creates an embedding for it too. After that, it compares the two using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cosine_similarity\" target=\"_blank\" rel=\"noopener\">cosine similarity<\/a>.<\/p>\n<p>Finally, the closest matches appear as results. To learn more, read our article on <a href=\"https:\/\/webkul.com\/blog\/build-visual-image-search-in-ecommerce\/\">how to build visual image search in e-commerce<\/a>.<\/p>\n<h2>Key Features of ERPNext Product Image Search<\/h2>\n<ul>\n<li>Adds a camera icon to the Webshop search bars, so shoppers can search by photo.<\/li>\n<li>Shows an optional preview before the search runs.<\/li>\n<li>Includes an image editor with zoom, rotate, crop, reset, and re-upload.<\/li>\n<li>Displays a loading spinner while the app finds matches.<\/li>\n<li>Searches all published Website Items or, instead, only the items you select.<\/li>\n<li>Lets you set a <strong>Score Threshold<\/strong> so you control how strict matching is.<\/li>\n<li>Lets you limit results with <strong>Maximum Suggestions<\/strong>.<\/li>\n<li>Shows each result with image, name, price, and a product link.<\/li>\n<li>Flags embeddings as stale when you update an item, and deletes them when you delete it.<\/li>\n<li>Also gives Website Managers one place to manage everything in the Website workspace.<\/li>\n<\/ul>\n<h2>Requirements<\/h2>\n<p>Before you install the app, make sure your site has the following:<\/p>\n<ul>\n<li>ERPNext and Webshop<\/li>\n<li>The Python packages <code>torch<\/code>, <code>torchvision<\/code>, and <code>Pillow<\/code>, because the app needs them to generate embeddings<\/li>\n<\/ul>\n<h2>How to Install ERPNext Product Image Search<\/h2>\n<p>First, place the app in your Frappe bench <code>apps<\/code> folder. Then install it on your site:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"\">bench --site your-site install-app website_product_image_search\nbench --site your-site migrate\nbench --site your-site clear-cache<\/pre>\n<p>Replace <code>your-site<\/code> with your site name. Next, confirm the installation:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"\">bench --site your-site list-apps<\/pre>\n<p>As a result, <code>website_product_image_search<\/code> should appear in the list.<\/p>\n<p>After that, open the <strong>Website<\/strong> workspace in ERPNext Desk. There you will see an <strong>Image Search<\/strong> section with two links:<\/p>\n<ul>\n<li><strong>Image Search Configuration<\/strong><\/li>\n<li><strong>Product Image Embedding<\/strong><\/li>\n<\/ul>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-website-product-image-search-workspace.webp\" alt=\"ERPNext Product Image Search links in the Website workspace\" class=\"wp-image-557591\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-website-product-image-search-workspace.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-website-product-image-search-workspace-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-website-product-image-search-workspace-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-website-product-image-search-workspace-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-website-product-image-search-workspace-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-website-product-image-search-workspace-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Image Search links in the ERPNext Website workspace<\/figcaption><\/figure>\n<p>If the links do not appear, run <code>migrate<\/code> and <code>clear-cache<\/code> again. Then hard refresh the browser.<\/p>\n<h2>Create an ERPNext Image Search Configuration<\/h2>\n<p>The configuration decides which products shoppers can find and how strict matching is. So set it up first:<\/p>\n<ol>\n<li>First, go to <strong>Website &gt; Image Search Configuration<\/strong>.<\/li>\n<li>Then click <strong>Add Image Search Configuration<\/strong>.<\/li>\n<li>Next, enter a <strong>Configuration Name<\/strong>, for example <em>All Products Embeddings<\/em>.<\/li>\n<li>Also, check <strong>Enabled<\/strong>.<\/li>\n<li>In <strong>Select Product<\/strong>, choose <strong>All Products<\/strong> or <strong>Selected Products<\/strong>.<\/li>\n<li>Check <strong>Preview after Upload<\/strong> if shoppers should see their photo before results.<\/li>\n<li>After that, set <strong>Maximum Suggestions<\/strong>, for example <code>5<\/code>.<\/li>\n<li>Then set <strong>Score Threshold<\/strong> between <code>0<\/code> and <code>1<\/code>.<\/li>\n<li>Finally, click <strong>Save<\/strong>.<\/li>\n<\/ol>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-all-products.webp\" alt=\"ERPNext product image search configuration with All Products selected\" class=\"wp-image-557583\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-all-products.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-all-products-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-all-products-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-all-products-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-all-products-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-all-products-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Image Search Configuration with All Products selected<\/figcaption><\/figure>\n<h3>Choose a Score Threshold<\/h3>\n<p>The Score Threshold sets the minimum similarity a product needs before it appears in results.<\/p>\n<table>\n<thead>\n<tr>\n<th>Threshold<\/th>\n<th>Matching<\/th>\n<th>Result<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0.20<\/td>\n<td>Loose<\/td>\n<td>Many results, but some weak matches<\/td>\n<\/tr>\n<tr>\n<td>0.50<\/td>\n<td>Medium<\/td>\n<td>Balanced results, so a good default<\/td>\n<\/tr>\n<tr>\n<td>0.70<\/td>\n<td>Strict<\/td>\n<td>Strong matches, although fewer results<\/td>\n<\/tr>\n<tr>\n<td>0.90<\/td>\n<td>Very strict<\/td>\n<td>Only very close matches, so often none<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For example, a threshold of <code>0.70<\/code> hides products that score below <code>0.70<\/code>. For a live store, however, start between <code>0.60<\/code> and <code>0.75<\/code>.<\/p>\n<h2>Choose Products for ERPNext Image Search<\/h2>\n<h3>All Products<\/h3>\n<p>Choose <strong>All Products<\/strong> when shoppers should find your whole published catalog by image.<\/p>\n<p>When you store embeddings, the app then reads every published Website Item. It uses the item&#8217;s image, or the linked Item&#8217;s image, to generate an embedding.<\/p>\n<p>This option gives you full catalog search with the simplest setup. However, keep in mind:<\/p>\n<ul>\n<li>The app only includes published Website Items.<\/li>\n<li>It also skips products that have no image.<\/li>\n<li>Large catalogs take longer, so plan for extra processing time.<\/li>\n<\/ul>\n<h3>Selected Products<\/h3>\n<p>Choose <strong>Selected Products<\/strong> when shoppers should only find specific items. In that case, a <strong>Products<\/strong> table appears where you add Website Items.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-selected-products.webp\" alt=\"Selected Products table in the configuration\" class=\"wp-image-557584\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-selected-products.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-selected-products-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-selected-products-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-selected-products-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-selected-products-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-image-search-configuration-selected-products-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Selected Products mode shows a Products table<\/figcaption><\/figure>\n<p>This option works well when you want to:<\/p>\n<ul>\n<li>Test image search with a small set of products first.<\/li>\n<li>Limit search to certain categories, for example during a campaign.<\/li>\n<li>Leave out products that have poor-quality photos.<\/li>\n<li>Generate embeddings faster, because the app processes fewer images.<\/li>\n<\/ul>\n<p>However, products outside the table never appear in results. So remember to add new products when needed.<\/p>\n<h2>Store Product Image Embeddings for Search<\/h2>\n<p>Image search only returns results after you generate embeddings. So follow these steps:<\/p>\n<ol>\n<li>First, open your saved Image Search Configuration.<\/li>\n<li>Then make sure <strong>Enabled<\/strong> is on.<\/li>\n<li>If you chose Selected Products, also add products to the table.<\/li>\n<li>Next, click <strong>Store Embeddings<\/strong> under <strong>Embedding Actions<\/strong>.<\/li>\n<li>Wait until processing finishes.<\/li>\n<li>Finally, review the status and the new Product Image Embedding records.<\/li>\n<\/ol>\n<p>This action first deletes old embeddings for the configuration. Then it generates fresh ones and sets the status to <strong>Stored<\/strong>.<\/p>\n<p>If the app cannot process an image, however, it sets that record to <strong>Failed<\/strong>.<\/p>\n<h3>Clear Embeddings<\/h3>\n<p>To remove all embeddings for a configuration, open it and click <strong>Clear Embeddings<\/strong>. Then confirm the action.<\/p>\n<p>As a result, the status changes to <strong>Draft<\/strong>. The configuration then returns no results until you store embeddings again.<\/p>\n<h3>Refresh Stale Embeddings<\/h3>\n<p>The app watches your Website Items. When you update an item, the app flags its embeddings and configuration as <strong>Stale<\/strong>.<\/p>\n<p>Similarly, when you delete an item, the app deletes its embeddings. So if a configuration shows Stale, click <strong>Store Embeddings<\/strong> again.<\/p>\n<h2>Review the Product Image Embedding List<\/h2>\n<p>Go to <strong>Website &gt; Product Image Embedding<\/strong> to review the records. However, you never need to create or edit them yourself.<\/p>\n<p>Each record shows the Image Search Configuration, Website Item, Item Code, Image URL, and Status.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-product-image-embedding-list.webp\" alt=\"Embedding records list with Stored status\" class=\"wp-image-557585\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-product-image-embedding-list.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-product-image-embedding-list-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-product-image-embedding-list-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-product-image-embedding-list-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-product-image-embedding-list-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-product-image-embedding-list-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Generated Product Image Embedding records<\/figcaption><\/figure>\n<h2>How Customers Use ERPNext Product Image Search<\/h2>\n<p><strong>Step 1:<\/strong> First, the customer clicks the camera icon in the header search bar or on the <strong>All Products<\/strong> page.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-camera-icon.webp\" alt=\"ERPNext product image search camera icon in the Webshop search bar\" class=\"wp-image-557586\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-camera-icon.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-camera-icon-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-camera-icon-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-camera-icon-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-camera-icon-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-camera-icon-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Camera icon in the Webshop search bars<\/figcaption><\/figure>\n<p><strong>Step 2:<\/strong> Then the <strong>AI Image Search<\/strong> dialog opens, and the customer uploads a product photo.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-upload-dialog.webp\" alt=\"Upload dialog on the storefront\" class=\"wp-image-557590\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-upload-dialog.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-upload-dialog-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-upload-dialog-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-upload-dialog-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-upload-dialog-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-upload-dialog-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Upload dialog<\/figcaption><\/figure>\n<p><strong>Step 3:<\/strong> Next, the customer previews the photo and clicks <strong>Search<\/strong>. Alternatively, they click <strong>Edit<\/strong> to adjust it first.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-preview.webp\" alt=\"Uploaded photo preview with Edit and Search buttons\" class=\"wp-image-557588\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-preview.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-preview-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-preview-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-preview-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-preview-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-preview-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Image preview before searching<\/figcaption><\/figure>\n<p><strong>Step 4:<\/strong> In the editor, the customer can zoom, crop, and rotate the photo. They can also reset it, upload another image, and save.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-editor.webp\" alt=\"Photo editor with zoom, crop, rotate, reset and upload tools\" class=\"wp-image-557587\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-editor.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-editor-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-editor-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-editor-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-editor-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-editor-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Built-in image editor with crop box<\/figcaption><\/figure>\n<p><strong>Step 5:<\/strong> While the app finds matches, a loading spinner appears. Then similar products show below the search bar with image, name, and price.<\/p>\n<p>Finally, the customer clicks a result to open the product page.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp\" alt=\"ERPNext product image search results showing a matching watch\" class=\"wp-image-557589\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp 1600w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results-300x188.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results-1200x750.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results-250x156.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results-768x480.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results-1536x960.webp 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" loading=\"lazy\" \/><figcaption>Visually similar products returned by image search<\/figcaption><\/figure>\n<h2>Recommended Setup for ERPNext Image Search<\/h2>\n<ol>\n<li>First, publish 10 to 20 Website Items with clear images.<\/li>\n<li>Then create a configuration with <strong>Selected Products<\/strong> and add those items.<\/li>\n<li>Next, set Maximum Suggestions to <code>5<\/code> and Score Threshold to <code>0.50<\/code>.<\/li>\n<li>After that, save and click <strong>Store Embeddings<\/strong>.<\/li>\n<li>Then open your webshop, click the camera icon, and upload a product photo.<\/li>\n<li>Finally, check the results and adjust the threshold if needed.<\/li>\n<\/ol>\n<p>Once you like the results, switch to <strong>All Products<\/strong> for full catalog search. Then store embeddings again and test with real customer photos.<\/p>\n<h2>Troubleshooting ERPNext Product Image Search<\/h2>\n<h3>The Camera Icon Does Not Appear<\/h3>\n<ul>\n<li>First, check that you installed the app.<\/li>\n<li>Also check that an enabled configuration has <strong>Stored<\/strong> or <strong>Stale<\/strong> status.<\/li>\n<li>Then run <code>bench --site your-site clear-cache<\/code> and hard refresh the website.<\/li>\n<\/ul>\n<h3>No Results in ERPNext Image Search<\/h3>\n<ul>\n<li>First, confirm you enabled the configuration and stored embeddings.<\/li>\n<li>Also confirm the Website Items are live and have images.<\/li>\n<li>Then lower the Score Threshold, for example from <code>0.70<\/code> to <code>0.50<\/code>.<\/li>\n<\/ul>\n<h3>Wrong or Weak Matches Appear<\/h3>\n<p>In this case, raise the Score Threshold. For example, change <code>0.40<\/code> to <code>0.60<\/code>, or <code>0.60<\/code> to <code>0.75<\/code>.<\/p>\n<h3>Selected Products Are Missing From Image Search<\/h3>\n<ul>\n<li>First, confirm the product sits in the Products table, is live, and has an image.<\/li>\n<li>Then run <strong>Store Embeddings<\/strong> again after you add products.<\/li>\n<\/ul>\n<h3>Store Embeddings Fails<\/h3>\n<ul>\n<li>First, confirm that <code>torch<\/code>, <code>torchvision<\/code>, and <code>Pillow<\/code> exist in your environment.<\/li>\n<li>Also check that product image files exist and open correctly.<\/li>\n<li>Then make sure the server can reach remote image URLs.<\/li>\n<li>Finally, read the <strong>Error Log<\/strong>, fix the image, and store embeddings again.<\/li>\n<\/ul>\n<h2>More ERPNext Webshop Apps<\/h2>\n<p>You can also extend your store with these related Webkul apps:<\/p>\n<ul>\n<li><a href=\"https:\/\/webkul.com\/blog\/user-guide-for-erpnext-website-product-pack\/\">ERPNext Website Product Pack<\/a>, so you can sell packs with their own pricing.<\/li>\n<li><a href=\"https:\/\/webkul.com\/blog\/erpnext-website-product-stock-documentation\/\">ERPNext Website Product Stock<\/a>, so shoppers see stock on the storefront.<\/li>\n<li><a href=\"https:\/\/webkul.com\/blog\/erpnext-website-store-locator-documentation\/\">ERPNext Website Store Locator<\/a>, so customers find your physical stores.<\/li>\n<\/ul>\n<p>In addition, browse all our <a href=\"https:\/\/store.webkul.com\/erpnext.html\">ERPNext apps on the Webkul Store<\/a>. You can also read more <a href=\"https:\/\/webkul.com\/blog\/tag\/erpnext\/\">ERPNext articles on our blog<\/a>.<\/p>\n<h2>Conclusion<\/h2>\n<p>ERPNext Product Image Search makes your Webshop easier to use. As a result, customers find products from a photo, even without the product name.<\/p>\n<p>Moreover, setup takes only a few minutes. First create a configuration, then choose products, set a threshold, and store embeddings.<\/p>\n<p>If you need help or a custom feature, contact our team through our <a href=\"https:\/\/webkul.com\/erp-development-services\/\">ERP development services<\/a> page.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how ERPNext Product Image Search lets Webshop customers find products by uploading a photo.<\/p>\n","protected":false},"author":724,"featured_media":557589,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16119],"tags":[14730,7998],"class_list":["post-557579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-erpnext","tag-erpnext","tag-image-search"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>User Guide of ERPNext Product Image Search - Webkul Blog<\/title>\n<meta name=\"description\" content=\"ERPNext Product Image Search lets Webshop customers find products by photo. Learn setup, embeddings, thresholds and troubleshooting.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"User Guide of ERPNext Product Image Search - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"ERPNext Product Image Search lets Webshop customers find products by photo. Learn setup, embeddings, thresholds and troubleshooting.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-15T12:10:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-15T12:10:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Prashant Saini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prashant Saini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/\"},\"author\":{\"name\":\"Prashant Saini\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/53a57eff87fe1f3e9e69c165efdabdc4\"},\"headline\":\"User Guide of ERPNext Product Image Search\",\"datePublished\":\"2026-09-15T12:10:38+00:00\",\"dateModified\":\"2026-09-15T12:10:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/\"},\"wordCount\":1550,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp\",\"keywords\":[\"ERPNext\",\"image search\"],\"articleSection\":[\"ErpNext\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/\",\"url\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/\",\"name\":\"User Guide of ERPNext Product Image Search - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp\",\"datePublished\":\"2026-09-15T12:10:38+00:00\",\"dateModified\":\"2026-09-15T12:10:44+00:00\",\"description\":\"ERPNext Product Image Search lets Webshop customers find products by photo. Learn setup, embeddings, thresholds and troubleshooting.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp\",\"width\":1600,\"height\":1000,\"caption\":\"Erpnext webshop image search results\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"User Guide of ERPNext Product Image Search\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/53a57eff87fe1f3e9e69c165efdabdc4\",\"name\":\"Prashant Saini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/90bd6382a7aa9ee0d5835bfaab3a739f91c37833f8e0d7cad51cd6a52b4914f0?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/90bd6382a7aa9ee0d5835bfaab3a739f91c37833f8e0d7cad51cd6a52b4914f0?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Prashant Saini\"},\"description\":\"Prashant, a passionate Machine Learning and AI enthusiast, specialized in building intelligent solutions using Python and Generative AI technologies.\",\"url\":\"https:\/\/webkul.com\/blog\/author\/prashant-ml322\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"User Guide of ERPNext Product Image Search - Webkul Blog","description":"ERPNext Product Image Search lets Webshop customers find products by photo. Learn setup, embeddings, thresholds and troubleshooting.","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:\/\/webkul.com\/blog\/erpnext-product-image-search\/","og_locale":"en_US","og_type":"article","og_title":"User Guide of ERPNext Product Image Search - Webkul Blog","og_description":"ERPNext Product Image Search lets Webshop customers find products by photo. Learn setup, embeddings, thresholds and troubleshooting.","og_url":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2026-09-15T12:10:38+00:00","article_modified_time":"2026-09-15T12:10:44+00:00","og_image":[{"width":1600,"height":1000,"url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp","type":"image\/webp"}],"author":"Prashant Saini","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Prashant Saini","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/"},"author":{"name":"Prashant Saini","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/53a57eff87fe1f3e9e69c165efdabdc4"},"headline":"User Guide of ERPNext Product Image Search","datePublished":"2026-09-15T12:10:38+00:00","dateModified":"2026-09-15T12:10:44+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/"},"wordCount":1550,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#primaryimage"},"thumbnailUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp","keywords":["ERPNext","image search"],"articleSection":["ErpNext"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/","url":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/","name":"User Guide of ERPNext Product Image Search - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#primaryimage"},"thumbnailUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp","datePublished":"2026-09-15T12:10:38+00:00","dateModified":"2026-09-15T12:10:44+00:00","description":"ERPNext Product Image Search lets Webshop customers find products by photo. Learn setup, embeddings, thresholds and troubleshooting.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/erpnext-product-image-search\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/09\/erpnext-webshop-image-search-results.webp","width":1600,"height":1000,"caption":"Erpnext webshop image search results"},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/erpnext-product-image-search\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"User Guide of ERPNext Product Image Search"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/53a57eff87fe1f3e9e69c165efdabdc4","name":"Prashant Saini","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/90bd6382a7aa9ee0d5835bfaab3a739f91c37833f8e0d7cad51cd6a52b4914f0?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/90bd6382a7aa9ee0d5835bfaab3a739f91c37833f8e0d7cad51cd6a52b4914f0?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Prashant Saini"},"description":"Prashant, a passionate Machine Learning and AI enthusiast, specialized in building intelligent solutions using Python and Generative AI technologies.","url":"https:\/\/webkul.com\/blog\/author\/prashant-ml322\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/557579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/724"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=557579"}],"version-history":[{"count":7,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/557579\/revisions"}],"predecessor-version":[{"id":557620,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/557579\/revisions\/557620"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media\/557589"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=557579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=557579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=557579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}