September 9, 2024

# ID Card analysis

Index

## Introduction

In this article we will see how we will be able to recover information (photo, and other information) from a scanned identity card. The idea is to put into practice the previous articles on facial recognition and text recognition (with tesseract).

Here is the identity card that we will analyze:

Needless to say that this identity card is fictitious (and not only because Michael was not french !), however we will find the same difficulties as on a real one. We will use as Python language and the OpenCV and Tesseract libraries (for OCR). The first lines must not generate an error, otherwise you will have to import the libraries (don’t forget numpy, Image, etc.) via pip for example.

```try:
from PIL import Image
except ImportError:
import Image
import pytesseract
from pytesseract import Output
import cv2
import numpy as np
from matplotlib import pyplot as plt
```

## Cropping the photo

As we saw in the article on facial recognition, we will first recognize and trim the ID photo using OpenCV facial recognition.

Note: Use the haarcascade_frontalface_default.xml template for this type of detection.

```imagePath = r'ci.jpg'
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
)
print("Il y a {0} visage(s).".format(len(faces)))
# Coordonnées des rectangles des visages détectés (x, y, w, h)
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

plt.imshow(image)
```

No difficulties to report, OpenCV detects the face very well and we can therefore extract it simply by doing a slicing operation with numpy:

```f = faces[0]
plt.imshow(image[f[1]:f[1]+f[3], f[0]:f[0]+f[2]])
```

## Retrieving other information

The objective is now to retrieve the textual information of the identity card. Let’s try tesseract directly on the source image:

```print(pytesseract.image_to_string(image))
```
``````REPUBLIQUE FRANCAISE
‘CARTE NATIONALE DIDENTITE Ne 7700773MIO777__Nationaité Francaise
MS Nom! JACKSON

Prtnomiy: MICHAEL, JOSEPH

Sexe: H Nef le: 29.08, 1958

IDFRAJACKSON<<<<<<<<``````
``` We somehow recover the various information. However, there are many interpretation errors (Prtnomiy instead of First name (s), etc.) which may make it difficult to intelligently retrieve the various elements. This may be due to the complex background of the ID card (watermarks and the like) which make it difficult to tesseract. Let's try to retouch the image (by adjusting the thresholds, gray levels, etc.): # Niveaux de gris def grayscale(image): return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Réduction de bruits def remove_noise(image): return cv2.medianBlur(image,1) # Seuillage def thresholding(image): return cv2.threshold(image, 200, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] finalimage = remove_noise(thresholding(grayscale(image))) plt.imshow(finalimage) texteCI = pytesseract.image_to_string(finalimage) print(texteCI) The result is hardly better in reality, so we will try a different approach. Targeted approach The quality of information being difficult to interpret, a good approach probably consists in targeting the information that we are going to send to tesseract. So we will cut the image into several pieces. Each piece must contain the information to be recovered. The ID card is rather a good example because the information is always placed in roughly the same place. We will start by retrieving the coordinates of the frame containing the name. We need the point on the top left and the one on the bottom right. the easiest way is to open the image in a drawing tool (like pinta on ubuntu) and look at the coordinates when you hover the mouse (see frame at top right in red): Once the two points have been recovered, it suffices to cut the image via a slicing operation with numpy. Let's check that the identification framework is the right one: image = cv2.imread(imagePath) x = 151 y = 49 w = 300 h = 69 plt.imshow(cv2.rectangle(image, (x, y), (w, h), (0, 255, 0), 2)) Now we can extract the image: region_Nom = image[y:h, x:w] plt.imshow(region_Nom) Let's use tesseract on this cropped image: region_Nom = remove_noise(thresholding(grayscale(region_Nom))) NomCI = pytesseract.image_to_string(region_Nom) print(NomCI) JACKSON And ... after ? It is now sufficient to apply the same method to the other areas to be recovered. A small downside all the same, we cut the image according to fixed coordinates. The concern is that there may be shifts when scanning the different identity cards: these coordinates may therefore not be good from one image to another. The technique therefore consists in locating a fixed element on the image (such as for example the R for French Republic at the top) and making it the reference point for the locating coordinates. As usual you will find the codes for this article on GitHub. jQuery(document).ready(function(\$) { \$.post('http://aishelf.org/wp-admin/admin-ajax.php', {action: 'wpt_view_count', id: '17114'}); }); Share this post ```
``` Taggedididentityidentity cardopencvtesseract ```
``` Post navigation Previous Post Previous post: Facial recognition in an image with OpenCVNext Post Next post: Strings Comparison Benoit Cayla In more than 15 years, I have built-up a solid experience around various integration projects (data & applications). I have, indeed, worked in nine different companies and successively adopted the vision of the service provider, the customer and the software editor. This experience, which made me almost omniscient in my field naturally led me to be involved in large-scale projects around the digitalization of business processes, mainly in such sectors like insurance and finance. Really passionate about AI (Machine Learning, NLP and Deep Learning), I joined Blue Prism in 2019 as a pre-sales solution consultant, where I can combine my subject matter skills with automation to help my customers to automate complex business processes in a more efficient way. In parallel with my professional activity, I run a blog aimed at showing how to understand and analyze data as simply as possible: datacorner.fr Learning, convincing by the arguments and passing on my knowledge could be my caracteristic triptych. View all posts by Benoit Cayla → You might also like Automate image straightening with Blue Prism and Python September 15, 2020December 4, 2020 A REST service that processes invoices scanned in Python January 1, 2020December 4, 2020 Keras to the rescue of the Titanic? May 30, 2019December 4, 2020 Leave a Reply Your email address will not be published. Required fields are marked *Comment * Name * Email * Website Δdocument.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() ); This site uses Akismet to reduce spam. Learn how your comment data is processed. ```
``` ```
``` body .wpsw-social-links li a .social-icon { background: #ffffff !important; color:#494949 !important; } body .wpsw-social-links li a .social-icon:hover, body .wpsw-social-links li a .social-icon:focus { background: #ffffff !important; color:#9b9b9b !important; } Popular Recent jQuery(function(\$) { \$('#wpt_widget-2_content').data('args', {"allow_pagination":"1","post_num":"5","title_length":"40","comment_num":"5","show_thumb":"1","thumb_size":"small","show_date":"1","show_excerpt":"1","excerpt_length":"40","show_comment_num":"","show_avatar":"1"}); }); Categoriesopen all | close all /* <![CDATA[ */ try{ if(document.getElementById && document.getElementById('oclinks_cat1')){document.getElementById('oclinks_cat1').style.display = 'block';} var cat1 = new wpdTree('cat1', 'http://aishelf.org/','0'); cat1.config.useLines=0; cat1.config.useIcons=1; cat1.config.closeSameLevel=1; cat1.config.folderLinks=1; cat1.config.useSelection=1; cat1.a(0,'root','','','','',''); cat1.a(-461,0,'Analytics (18)','In this part of my web site you\'ll find some tips &amp; tricks around analytics by managing real uses cases.','category/data-analytics/','',''); cat1.a(-47,0,'Artificial Intelligence (57)','','category/ia/','',''); cat1.a(-724,-658,'Audio (1)','','category/data-processing/audio/','',''); cat1.a(-45,0,'Coding (28)','','category/coding/','',''); cat1.a(-11,-45,'Coding tools (2)','','category/coding/coding-tools/','',''); cat1.a(-640,0,'Computer Vision (15)','','category/computer-vision/','',''); cat1.a(-714,-658,'Data Access (9)','','category/data-processing/data-access/','',''); cat1.a(-122,-47,'Data prep (17)','In this section of my blog you\'ll be able to find some informations and usage around data preparation. I will also try some data preparation tools.','category/ia/data-prep/','',''); cat1.a(-658,0,'Data Processing (44)','','category/data-processing/','',''); cat1.a(-514,-47,'Deep Learning (10)','','category/ia/deep-learning/','',''); cat1.a(-643,-640,'Form recognition (9)','','category/computer-vision/form-recognition/','',''); cat1.a(-642,-640,'HTR (2)','','category/computer-vision/htr/','',''); cat1.a(-661,-658,'Image (18)','Image processing posts','category/data-processing/image-processing/','',''); cat1.a(-758,0,'Image processing (7)','','category/image-processing-2/','',''); cat1.a(-4,-45,'Java (2)','','category/coding/java/','',''); cat1.a(-3,-45,'Javascript (2)','','category/coding/javascript/','',''); cat1.a(-663,-658,'Localization (1)','','category/data-processing/localization-data/','',''); cat1.a(-715,-47,'Machine Learning (8)','','category/ia/machine-learning/','',''); cat1.a(-98,-47,'Modeling (17)','','category/ia/data-modeling/','',''); cat1.a(-684,-47,'NLP (4)','','category/ia/nlp/','',''); cat1.a(-757,0,'Object detection with YOLO (4)','','category/object-detection-with-yolo/','',''); cat1.a(-515,-640,'OCR (6)','','category/computer-vision/ocr/','',''); cat1.a(-17,0,'Opinion (6)','Any opinion about the data world ...','category/opinion/','',''); cat1.a(-66,-45,'Python (25)','','category/coding/python/','',''); cat1.a(-669,0,'RPA (4)','','category/rpa/','',''); cat1.a(-660,-658,'Text (20)','','category/data-processing/text-management/','',''); cat1.a(-134,-47,'Tools (9)','','category/ia/ia-tool/','',''); cat1.a(-15,0,'Tutorials (21)','','category/howtos/','',''); cat1.a(-133,0,'Uses Cases (13)','You\'ll find here many uses cases around the A.I. management','category/uses-cases/','',''); cat1.a(-491,-47,'Various (7)','','category/ia/various-ai/','',''); cat1.a(-178,0,'Various (1)','','category/various/','',''); cat1.a(-662,-658,'Video (1)','','category/data-processing/video-processing/','',''); cat1.a(-7,-45,'Web Development (3)','','category/coding/web-dev/','',''); cat1.a(18966,-178,'ExYPro : Process Mining Methodology','','exypro-process-mining-methodology/','',''); cat1.a(18922,-15,'Discover Plotly','','plotly/','',''); cat1.a(18922,-461,'Discover Plotly','','plotly/','',''); cat1.a(18870,-514,'YOLO (Part 4) Reduce detected classes','','yolo-class-reduc-2/','',''); cat1.a(18870,-661,'YOLO (Part 4) Reduce detected classes','','yolo-class-reduc-2/','',''); cat1.a(18870,-757,'YOLO (Part 4) Reduce detected classes','','yolo-class-reduc-2/','',''); cat1.a(18846,-514,'YOLO (Part 3) Non Maxima Suppression (NMS)','','yolo-nms/','',''); cat1.a(18846,-643,'YOLO (Part 3) Non Maxima Suppression (NMS)','','yolo-nms/','',''); cat1.a(18846,-661,'YOLO (Part 3) Non Maxima Suppression (NMS)','','yolo-nms/','',''); cat1.a(18846,-757,'YOLO (Part 3) Non Maxima Suppression (NMS)','','yolo-nms/','',''); cat1.a(18829,-514,'YOLO (Part 2) Object detection with YOLO &#038; OpenCV','','yolo-opencv/','',''); cat1.a(18829,-643,'YOLO (Part 2) Object detection with YOLO &#038; OpenCV','','yolo-opencv/','',''); cat1.a(18829,-661,'YOLO (Part 2) Object detection with YOLO &#038; OpenCV','','yolo-opencv/','',''); cat1.a(18829,-757,'YOLO (Part 2) Object detection with YOLO &#038; OpenCV','','yolo-opencv/','',''); cat1.a(18810,-17,'Will “Citizen development” suffer the same destiny as the hybrid engine?','','citizen-developpement/','',''); cat1.a(18794,-15,'YOLO (Part 1) Introduction with Darknet','','yolo/','',''); cat1.a(18794,-514,'YOLO (Part 1) Introduction with Darknet','','yolo/','',''); cat1.a(18794,-643,'YOLO (Part 1) Introduction with Darknet','','yolo/','',''); cat1.a(18794,-661,'YOLO (Part 1) Introduction with Darknet','','yolo/','',''); cat1.a(18794,-757,'YOLO (Part 1) Introduction with Darknet','','yolo/','',''); cat1.a(18782,-15,'Introduction to nlpcloud.io','','nlpcloud/','',''); cat1.a(18782,-660,'Introduction to nlpcloud.io','','nlpcloud/','',''); cat1.a(18782,-684,'Introduction to nlpcloud.io','','nlpcloud/','',''); cat1.a(18750,-15,'Discover Gradio: a simple web UI for your Models','','gradio/','',''); cat1.a(18750,-134,'Discover Gradio: a simple web UI for your Models','','gradio/','',''); cat1.a(18733,-514,'Transfer Learning with VGG','','vgg-transfer-learning/','',''); cat1.a(18733,-661,'Transfer Learning with VGG','','vgg-transfer-learning/','',''); cat1.a(18721,-133,'Fake News ?','','fake-news-nlp/','',''); cat1.a(18721,-514,'Fake News ?','','fake-news-nlp/','',''); cat1.a(18721,-660,'Fake News ?','','fake-news-nlp/','',''); cat1.a(18702,-98,'The Stochastic Gradient Descent (SGD) &#038; Learning Rate','','sgd-learning-rate/','',''); cat1.a(18677,-98,'The Gradient Descent','','gradient-descent/','',''); cat1.a(18667,-66,'Retrieve historical meteo data','','meteo-data/','',''); cat1.a(18667,-133,'Retrieve historical meteo data','','meteo-data/','',''); cat1.a(18667,-660,'Retrieve historical meteo data','','meteo-data/','',''); cat1.a(18630,-514,'Image processing (part 7) Convolution Neural Networks &#8211; CNN','','image-processing-7/','',''); cat1.a(18630,-643,'Image processing (part 7) Convolution Neural Networks &#8211; CNN','','image-processing-7/','',''); cat1.a(18630,-661,'Image processing (part 7) Convolution Neural Networks &#8211; CNN','','image-processing-7/','',''); cat1.a(18630,-758,'Image processing (part 7) Convolution Neural Networks &#8211; CNN','','image-processing-7/','',''); cat1.a(18621,-17,'Is automation the natural legacy of software industry ?','','auto-info/','',''); cat1.a(18621,-491,'Is automation the natural legacy of software industry ?','','auto-info/','',''); cat1.a(18604,-661,'Image processing (part 6) Filters &#038; Convolution','','image-processing-6/','',''); cat1.a(18604,-758,'Image processing (part 6) Filters &#038; Convolution','','image-processing-6/','',''); cat1.a(18556,-661,'Image processing (part 5) Morphologic Transformations','','image-processing-5/','',''); cat1.a(18556,-758,'Image processing (part 5) Morphologic Transformations','','image-processing-5/','',''); cat1.a(18531,-661,'Image processing (part 4) Image Transformations','','image-processing-4/','',''); cat1.a(18531,-758,'Image processing (part 4) Image Transformations','','image-processing-4/','',''); cat1.a(18475,-661,'Image processing (part 3) Image Thresholding','','image-processing-3/','',''); cat1.a(18475,-758,'Image processing (part 3) Image Thresholding','','image-processing-3/','',''); cat1.a(18497,-724,'Speech recognition with Python &#038; Google','','audio-recog/','',''); cat1.a(18449,-661,'Image processing (part 2) the histograms','','image-processing-2/','',''); cat1.a(18449,-758,'Image processing (part 2) the histograms','','image-processing-2/','',''); cat1.a(18429,-661,'Image processing (part 1) the digital representation','','image-processing-1/','',''); cat1.a(18429,-758,'Image processing (part 1) the digital representation','','image-processing-1/','',''); cat1.a(18302,-643,'Facial recognition in video with OpenCV','','video-facial-recognition/','',''); cat1.a(18302,-662,'Facial recognition in video with OpenCV','','video-facial-recognition/','',''); cat1.a(17980,-15,'Getting data from a pdf using Python','','pdf/','',''); cat1.a(17980,-66,'Getting data from a pdf using Python','','pdf/','',''); cat1.a(17980,-660,'Getting data from a pdf using Python','','pdf/','',''); cat1.a(17980,-714,'Getting data from a pdf using Python','','pdf/','',''); cat1.a(17660,-98,'Bias &#038; Variance… dilemma or compromise?','','bias-variance/','',''); cat1.a(17660,-491,'Bias &#038; Variance… dilemma or compromise?','','bias-variance/','',''); cat1.a(17630,-134,'Understanding Neural Networks with Tensorflow Playground','','tensorflow-playground/','',''); cat1.a(17630,-514,'Understanding Neural Networks with Tensorflow Playground','','tensorflow-playground/','',''); cat1.a(17588,-643,'Automate image straightening with Blue Prism and Python','','bp-deskew/','',''); cat1.a(17588,-661,'Automate image straightening with Blue Prism and Python','','bp-deskew/','',''); cat1.a(17588,-669,'Automate image straightening with Blue Prism and Python','','bp-deskew/','',''); cat1.a(17560,-98,'Markov chains','','markov/','',''); cat1.a(17533,-98,'Sentiment analysis on movie reviews','','sentiment-analysis/','',''); cat1.a(17533,-133,'Sentiment analysis on movie reviews','','sentiment-analysis/','',''); cat1.a(17533,-660,'Sentiment analysis on movie reviews','','sentiment-analysis/','',''); cat1.a(17533,-684,'Sentiment analysis on movie reviews','','sentiment-analysis/','',''); cat1.a(17533,-715,'Sentiment analysis on movie reviews','','sentiment-analysis/','',''); cat1.a(17412,-515,'Straighten a poorly scanned text document with deskew','','deskew/','',''); cat1.a(17412,-643,'Straighten a poorly scanned text document with deskew','','deskew/','',''); cat1.a(17412,-661,'Straighten a poorly scanned text document with deskew','','deskew/','',''); cat1.a(17412,-714,'Straighten a poorly scanned text document with deskew','','deskew/','',''); cat1.a(17622,-133,'KYC check with Blue Prism Decipher IDP','','blueprism-decipher-idp/','',''); cat1.a(17622,-515,'KYC check with Blue Prism Decipher IDP','','blueprism-decipher-idp/','',''); cat1.a(17622,-660,'KYC check with Blue Prism Decipher IDP','','blueprism-decipher-idp/','',''); cat1.a(17622,-669,'KYC check with Blue Prism Decipher IDP','','blueprism-decipher-idp/','',''); cat1.a(17384,-66,'dataprep.eda: a newcomer in data analysis','','dataprep-eda/','',''); cat1.a(17384,-122,'dataprep.eda: a newcomer in data analysis','','dataprep-eda/','',''); cat1.a(17384,-461,'dataprep.eda: a newcomer in data analysis','','dataprep-eda/','',''); cat1.a(17349,-66,'NLP with Python NLTK','','nltk/','',''); cat1.a(17349,-660,'NLP with Python NLTK','','nltk/','',''); cat1.a(17349,-684,'NLP with Python NLTK','','nltk/','',''); cat1.a(17270,-122,'Explore your data with DataExplore','','dataexplore/','',''); cat1.a(17270,-461,'Explore your data with DataExplore','','dataexplore/','',''); cat1.a(17277,-669,'A simple invoice control carried out with Blue Prism','','bp-factures/','',''); cat1.a(17246,-133,'Covid-19: Recover French official raw data','','covid-19/','',''); cat1.a(17246,-461,'Covid-19: Recover French official raw data','','covid-19/','',''); cat1.a(17246,-660,'Covid-19: Recover French official raw data','','covid-19/','',''); cat1.a(17183,-98,'Getting started in Auto-ML with AutoGluon','','autogluon/','',''); cat1.a(17183,-514,'Getting started in Auto-ML with AutoGluon','','autogluon/','',''); cat1.a(17183,-715,'Getting started in Auto-ML with AutoGluon','','autogluon/','',''); cat1.a(17149,-66,'Analyze your data with Pandas-profiling','','pandas-profiling/','',''); cat1.a(17149,-122,'Analyze your data with Pandas-profiling','','pandas-profiling/','',''); cat1.a(17149,-461,'Analyze your data with Pandas-profiling','','pandas-profiling/','',''); cat1.a(17133,-66,'Strings Comparison','','str-comparison/','',''); cat1.a(17133,-122,'Strings Comparison','','str-comparison/','',''); cat1.a(17133,-660,'Strings Comparison','','str-comparison/','',''); cat1.a(17114,-133,'ID Card analysis','','idcard/','',''); cat1.a(17114,-515,'ID Card analysis','','idcard/','',''); cat1.a(17114,-643,'ID Card analysis','','idcard/','',''); cat1.a(17114,-661,'ID Card analysis','','idcard/','',''); cat1.a(17080,-643,'Facial recognition in an image with OpenCV','','reco-faciale-opencv/','',''); cat1.a(17080,-661,'Facial recognition in an image with OpenCV','','reco-faciale-opencv/','',''); cat1.a(16738,-17,'IA: Between Data and Automation (RPA)','','ia-rpa/','',''); cat1.a(16738,-491,'IA: Between Data and Automation (RPA)','','ia-rpa/','',''); cat1.a(16738,-669,'IA: Between Data and Automation (RPA)','','ia-rpa/','',''); cat1.a(16981,-66,'Advanced use of Tesseract with Python','','tesseract-adv/','',''); cat1.a(16981,-515,'Advanced use of Tesseract with Python','','tesseract-adv/','',''); cat1.a(16981,-660,'Advanced use of Tesseract with Python','','tesseract-adv/','',''); cat1.a(16913,-7,'A REST service that processes invoices scanned in Python','','invoice-ws/','',''); cat1.a(16913,-15,'A REST service that processes invoices scanned in Python','','invoice-ws/','',''); cat1.a(16913,-66,'A REST service that processes invoices scanned in Python','','invoice-ws/','',''); cat1.a(16913,-515,'A REST service that processes invoices scanned in Python','','invoice-ws/','',''); cat1.a(16913,-660,'A REST service that processes invoices scanned in Python','','invoice-ws/','',''); cat1.a(16913,-661,'A REST service that processes invoices scanned in Python','','invoice-ws/','',''); cat1.a(16913,-714,'A REST service that processes invoices scanned in Python','','invoice-ws/','',''); cat1.a(16743,-15,'Get started with Tesseract','','tesseract/','',''); cat1.a(16743,-66,'Get started with Tesseract','','tesseract/','',''); cat1.a(16743,-122,'Get started with Tesseract','','tesseract/','',''); cat1.a(16743,-515,'Get started with Tesseract','','tesseract/','',''); cat1.a(16743,-660,'Get started with Tesseract','','tesseract/','',''); cat1.a(16700,-17,'Is big data dead? Long live Machine Learning','','finbigdataviveia/','',''); cat1.a(16700,-491,'Is big data dead? Long live Machine Learning','','finbigdataviveia/','',''); cat1.a(16683,-98,'Keras to the rescue of the Titanic?','','keras-titanic/','',''); cat1.a(16683,-133,'Keras to the rescue of the Titanic?','','keras-titanic/','',''); cat1.a(16683,-514,'Keras to the rescue of the Titanic?','','keras-titanic/','',''); cat1.a(16635,-122,'Preparing the datasets','','dataset-prepare/','',''); cat1.a(16607,-66,'Variables correlation','','correlation/','',''); cat1.a(16607,-122,'Variables correlation','','correlation/','',''); cat1.a(16607,-461,'Variables correlation','','correlation/','',''); cat1.a(16555,-15,'Orange Data Science Tool','','orange/','',''); cat1.a(16555,-122,'Orange Data Science Tool','','orange/','',''); cat1.a(16555,-134,'Orange Data Science Tool','','orange/','',''); cat1.a(16555,-461,'Orange Data Science Tool','','orange/','',''); cat1.a(16521,-134,'Make your Machine learning project successful !','','ia-project/','',''); cat1.a(16501,-133,'Analyze road accidents with Tableau','','accidents-tableau/','',''); cat1.a(16501,-461,'Analyze road accidents with Tableau','','accidents-tableau/','',''); cat1.a(16469,-7,'Publish your Machine Learning models with Flask!','','flask/','',''); cat1.a(16469,-15,'Publish your Machine Learning models with Flask!','','flask/','',''); cat1.a(16469,-45,'Publish your Machine Learning models with Flask!','','flask/','',''); cat1.a(16469,-66,'Publish your Machine Learning models with Flask!','','flask/','',''); cat1.a(16469,-98,'Publish your Machine Learning models with Flask!','','flask/','',''); cat1.a(16469,-714,'Publish your Machine Learning models with Flask!','','flask/','',''); cat1.a(16451,-66,'The persistence of machine learning models','','model-persistence/','',''); cat1.a(16451,-98,'The persistence of machine learning models','','model-persistence/','',''); cat1.a(16451,-715,'The persistence of machine learning models','','model-persistence/','',''); cat1.a(16398,-98,'CatBoost !','','catboost/','',''); cat1.a(16398,-715,'CatBoost !','','catboost/','',''); cat1.a(16281,-4,'The famous Regular Expressions (RegEx)','','regex/','',''); cat1.a(16281,-11,'The famous Regular Expressions (RegEx)','','regex/','',''); cat1.a(16281,-66,'The famous Regular Expressions (RegEx)','','regex/','',''); cat1.a(16281,-660,'The famous Regular Expressions (RegEx)','','regex/','',''); cat1.a(16217,-66,'Paris &#8220;Velib&#8221; Cycles usage analysis','','velib/','',''); cat1.a(16217,-133,'Paris &#8220;Velib&#8221; Cycles usage analysis','','velib/','',''); cat1.a(16217,-461,'Paris &#8220;Velib&#8221; Cycles usage analysis','','velib/','',''); cat1.a(16182,-15,'When Python &#038; Tableau get married !','','tabpy/','',''); cat1.a(16182,-66,'When Python &#038; Tableau get married !','','tabpy/','',''); cat1.a(16182,-461,'When Python &#038; Tableau get married !','','tabpy/','',''); cat1.a(16154,-15,'Tutorial: Just do NLP with SpaCy!','','spacy/','',''); cat1.a(16154,-66,'Tutorial: Just do NLP with SpaCy!','','spacy/','',''); cat1.a(16154,-660,'Tutorial: Just do NLP with SpaCy!','','spacy/','',''); cat1.a(16154,-684,'Tutorial: Just do NLP with SpaCy!','','spacy/','',''); cat1.a(16073,-3,'Embed your Tableau dashboards !','','tableau-embedded/','',''); cat1.a(16073,-15,'Embed your Tableau dashboards !','','tableau-embedded/','',''); cat1.a(16073,-461,'Embed your Tableau dashboards !','','tableau-embedded/','',''); cat1.a(16019,-15,'Pareto law with Tableau','','paretotab/','',''); cat1.a(16019,-461,'Pareto law with Tableau','','paretotab/','',''); cat1.a(16003,-15,'Prepare and analyze in 7 min with Tableau','','tabprepdesk/','',''); cat1.a(16003,-461,'Prepare and analyze in 7 min with Tableau','','tabprepdesk/','',''); cat1.a(15968,-461,'My first dashboard with Tableau','','1stdhbtableau/','',''); cat1.a(15912,-658,'You said Open Data… yes but where?','','opendata/','',''); cat1.a(15865,-122,'Bag of Words','','bag-of-words/','',''); cat1.a(15865,-660,'Bag of Words','','bag-of-words/','',''); cat1.a(15690,-122,'Managing string character','','strings/','',''); cat1.a(15690,-660,'Managing string character','','strings/','',''); cat1.a(15835,-4,'SQLite… SQL in a file!','','sqlite/','',''); cat1.a(15835,-66,'SQLite… SQL in a file!','','sqlite/','',''); cat1.a(15835,-714,'SQLite… SQL in a file!','','sqlite/','',''); cat1.a(15810,-15,'The Web Scraping','','webscrapython/','',''); cat1.a(15810,-66,'The Web Scraping','','webscrapython/','',''); cat1.a(15810,-122,'The Web Scraping','','webscrapython/','',''); cat1.a(15810,-660,'The Web Scraping','','webscrapython/','',''); cat1.a(15810,-714,'The Web Scraping','','webscrapython/','',''); cat1.a(15791,-66,'Managing location data','','location-data/','',''); cat1.a(15791,-122,'Managing location data','','location-data/','',''); cat1.a(15791,-461,'Managing location data','','location-data/','',''); cat1.a(15791,-663,'Managing location data','','location-data/','',''); cat1.a(15791,-714,'Managing location data','','location-data/','',''); cat1.a(15777,-98,'XGBoost: The super star of algorithms in ML competition','','xgboost/','',''); cat1.a(15777,-715,'XGBoost: The super star of algorithms in ML competition','','xgboost/','',''); cat1.a(15749,-15,'Access Hive &#038; HDFS via PySpark','','hive-spark-python/','',''); cat1.a(15749,-66,'Access Hive &#038; HDFS via PySpark','','hive-spark-python/','',''); cat1.a(15749,-714,'Access Hive &#038; HDFS via PySpark','','hive-spark-python/','',''); cat1.a(15725,-122,'Minimum statistics knowledge needed for Machine Learning','','statistiques-min/','',''); cat1.a(15665,-11,'Google Colab','','google-collaboratory/','',''); cat1.a(15665,-15,'Google Colab','','google-collaboratory/','',''); cat1.a(15665,-134,'Google Colab','','google-collaboratory/','',''); cat1.a(15600,-98,'Feature Scaling','','feature-scaling/','',''); cat1.a(15600,-122,'Feature Scaling','','feature-scaling/','',''); cat1.a(15571,-133,'MNSIT: Recognizing the numbers (Part 2)','','mnsit-2/','',''); cat1.a(15571,-642,'MNSIT: Recognizing the numbers (Part 2)','','mnsit-2/','',''); cat1.a(15571,-660,'MNSIT: Recognizing the numbers (Part 2)','','mnsit-2/','',''); cat1.a(15571,-661,'MNSIT: Recognizing the numbers (Part 2)','','mnsit-2/','',''); cat1.a(15511,-122,'Data Profiling','','profiling/','',''); cat1.a(15511,-461,'Data Profiling','','profiling/','',''); cat1.a(15511,-660,'Data Profiling','','profiling/','',''); cat1.a(15540,-133,'MNSIT: Recognizing the numbers (Part 1)','','mnsit-1/','',''); cat1.a(15540,-642,'MNSIT: Recognizing the numbers (Part 1)','','mnsit-1/','',''); cat1.a(15540,-660,'MNSIT: Recognizing the numbers (Part 1)','','mnsit-1/','',''); cat1.a(15498,-98,'Machine Learning Hyper-Parameters Tuning','','hyper-parameters/','',''); cat1.a(15434,-133,'Titanic: Let&#8217;s go further! (Part 2)','','titanic-2/','',''); cat1.a(15453,-15,'Python Pandas &#8211; Tutorial (Part N ° 2)','','pandas-2/','',''); cat1.a(15453,-66,'Python Pandas &#8211; Tutorial (Part N ° 2)','','pandas-2/','',''); cat1.a(15453,-134,'Python Pandas &#8211; Tutorial (Part N ° 2)','','pandas-2/','',''); cat1.a(15403,-66,'Kaggle: Let&#8217;s start with the Titanic! (Part 1)','','titanic-1/','',''); cat1.a(15403,-98,'Kaggle: Let&#8217;s start with the Titanic! (Part 1)','','titanic-1/','',''); cat1.a(15403,-133,'Kaggle: Let&#8217;s start with the Titanic! (Part 1)','','titanic-1/','',''); cat1.a(15403,-715,'Kaggle: Let&#8217;s start with the Titanic! (Part 1)','','titanic-1/','',''); cat1.a(15353,-98,'Evaluate your binary classification model','','model-class-evaluatation/','',''); cat1.a(15231,-122,'Data quality: The A.I. fuel !','','data-quality-ai/','',''); cat1.a(15231,-714,'Data quality: The A.I. fuel !','','data-quality-ai/','',''); cat1.a(15303,-122,'One-Hot encoding','','one-hot/','',''); cat1.a(15133,-17,'What is Machine Learning exaclty ?','','machinelearning/','',''); cat1.a(15133,-491,'What is Machine Learning exaclty ?','','machinelearning/','',''); cat1.a(15140,-15,'Linear Regression','','rg/','',''); cat1.a(15140,-98,'Linear Regression','','rg/','',''); cat1.a(15140,-715,'Linear Regression','','rg/','',''); cat1.a(15087,-15,'The Matplotlib library','','matplotlib/','',''); cat1.a(15087,-66,'The Matplotlib library','','matplotlib/','',''); cat1.a(15087,-134,'The Matplotlib library','','matplotlib/','',''); cat1.a(15087,-461,'The Matplotlib library','','matplotlib/','',''); cat1.a(15053,-98,'Logistic regression','','logit/','',''); cat1.a(15053,-715,'Logistic regression','','logit/','',''); cat1.a(15030,-491,'Machine learning &#8211; Memento','','ml-memento/','',''); cat1.a(14995,-15,'Python Pandas &#8211; Tutorial (Part N ° 1)','','pandas-1/','',''); cat1.a(14995,-66,'Python Pandas &#8211; Tutorial (Part N ° 1)','','pandas-1/','',''); cat1.a(14995,-134,'Python Pandas &#8211; Tutorial (Part N ° 1)','','pandas-1/','',''); cat1.a(14799,-66,'Machine Learning : getting the good tools for a good start !','','harness-for-datascience/','',''); cat1.a(14799,-134,'Machine Learning : getting the good tools for a good start !','','harness-for-datascience/','',''); cat1.a(14776,-491,'Data Science, very short introduction','','intro-data-sciences/','',''); cat1.a(12896,-17,'Why I quit Facebook','','bye-facebook/','',''); cat1.a(142,-3,'Produce graphs in Javascript with chartjs','','chartjs/','',''); cat1.a(142,-7,'Produce graphs in Javascript with chartjs','','chartjs/','',''); cat1.a(142,-461,'Produce graphs in Javascript with chartjs','','chartjs/','',''); document.write(cat1); }catch(e){} /* ]]> */ /* <![CDATA[ */ try{ cat1.openTo('17114', true); /*wp_query object id*/ }catch(e){} /* ]]> */ TagsSGD (1)speech recognition (1)stochastic (1)tableau (7)skimage (2)variance (2)vélib (1)tensorflow playground (1)scaling (1)titanic (4)Sentiment Analysis (1)scikit-learn (5)tensorflow (1)Standard Deviation (1)statistics (2)transformation (1)transfer learning (1)spacy (1)winkler (1)Strings (2)test (1)scikit-image (4)String (1)tesseract (4)Tuto (1)SQL (1)Scraping (1)scoring (1)web (1)sklearn (4)split (1)sqlite (1)Tableau Prep (1)yolo (4)vgg (1)XGBoost (3)spark (1)use case (1)tableau Desktop (1)spearman (1) Les derniers articles ExYPro : Process Mining Methodology Discover Plotly YOLO (Part 4) Reduce detected classes YOLO (Part 3) Non Maxima Suppression (NMS) YOLO (Part 2) Object detection with YOLO & OpenCV Will “Citizen development” suffer the same destiny as the hybrid engine? YOLO (Part 1) Introduction with Darknet ```
``` ```
``` Copyright © 2024 A.I. Shelf. Powered by WordPress and Bam. ```
``` function coolTagCloudToggle( element ) { var parent = element.closest('.cool-tag-cloud'); parent.querySelector('.cool-tag-cloud-inner').classList.toggle('cool-tag-cloud-active'); parent.querySelector( '.cool-tag-cloud-load-more').classList.toggle('cool-tag-cloud-active'); } (function(){ var corecss = document.createElement('link'); var themecss = document.createElement('link'); var corecssurl = "http://aishelf.org/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; if ( corecss.setAttribute ) { corecss.setAttribute( "rel", "stylesheet" ); corecss.setAttribute( "type", "text/css" ); corecss.setAttribute( "href", corecssurl ); } else { corecss.rel = "stylesheet"; corecss.href = corecssurl; } document.head.appendChild( corecss ); var themecssurl = "http://aishelf.org/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css?ver=3.0.9b"; if ( themecss.setAttribute ) { themecss.setAttribute( "rel", "stylesheet" ); themecss.setAttribute( "type", "text/css" ); themecss.setAttribute( "href", themecssurl ); } else { themecss.rel = "stylesheet"; themecss.href = themecssurl; } document.head.appendChild( themecss ); })(); SyntaxHighlighter.config.strings.expandSource = '+ expand source'; SyntaxHighlighter.config.strings.help = '?'; SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; SyntaxHighlighter.defaults['pad-line-numbers'] = false; SyntaxHighlighter.all(); // Infinite scroll support if ( typeof( jQuery ) !== 'undefined' ) { jQuery( function( \$ ) { \$( document.body ).on( 'post-load', function() { SyntaxHighlighter.highlight(); } ); } ); } /* <![CDATA[ */ var wpt = {"ajax_url":"http:\/\/aishelf.org\/wp-admin\/admin-ajax.php"}; /* ]]> */ /* <![CDATA[ */if ( !!window.jQuery ) {(function(\$){\$(document).ready(function(){if ( !!window.SLB && SLB.has_child('View.init') ) { SLB.View.init({"ui_autofit":true,"ui_animate":true,"slideshow_autostart":true,"slideshow_duration":"6","group_loop":true,"ui_overlay_opacity":"0.8","ui_title_default":false,"theme_default":"slb_default","ui_labels":{"loading":"Chargement","close":"Fermer","nav_next":"Suivant","nav_prev":"Pr\u00e9c\u00e9dent","slideshow_start":"Start slideshow","slideshow_stop":"Stop slideshow","group_status":"Item %current% of %total%"}}); } if ( !!window.SLB && SLB.has_child('View.assets') ) { {\$.extend(SLB.View.assets, {"461348159":{"id":17115,"type":"image","internal":true,"source":"http:\/\/aishelf.org\/wp-content\/uploads\/2020\/01\/ci.jpg","title":"ci","caption":"","description":""}});} } /* THM */ if ( !!window.SLB && SLB.has_child('View.extend_theme') ) { SLB.View.extend_theme('slb_baseline',{"name":"Baseline","parent":"","styles":[{"handle":"base","uri":"http:\/\/aishelf.org\/wp-content\/plugins\/simple-lightbox\/themes\/baseline\/css\/style.css","deps":[]}],"layout_raw":"<div class=\"slb_container\"><div class=\"slb_content\">{{item.content}}<div class=\"slb_nav\"><span class=\"slb_prev\">{{ui.nav_prev}}<\/span><span class=\"slb_next\">{{ui.nav_next}}<\/span><\/div><div class=\"slb_controls\"><span class=\"slb_close\">{{ui.close}}<\/span><span class=\"slb_slideshow\">{{ui.slideshow_control}}<\/span><\/div><div class=\"slb_loading\">{{ui.loading}}<\/div><\/div><div class=\"slb_details\"><div class=\"inner\"><div class=\"slb_data\"><div class=\"slb_data_content\"><span class=\"slb_data_title\">{{item.title}}<\/span><span class=\"slb_group_status\">{{ui.group_status}}<\/span><div class=\"slb_data_desc\">{{item.description}}<\/div><\/div><\/div><div class=\"slb_nav\"><span class=\"slb_prev\">{{ui.nav_prev}}<\/span><span class=\"slb_next\">{{ui.nav_next}}<\/span><\/div><\/div><\/div><\/div>"}); }if ( !!window.SLB && SLB.has_child('View.extend_theme') ) { SLB.View.extend_theme('slb_default',{"name":"Default (Light)","parent":"slb_baseline","styles":[{"handle":"base","uri":"http:\/\/aishelf.org\/wp-content\/plugins\/simple-lightbox\/themes\/default\/css\/style.css","deps":[]}]}); }})})(jQuery);}/* ]]> */ /* <![CDATA[ */if ( !!window.jQuery ) {(function(\$){\$(document).ready(function(){if ( !!window.SLB ) { {\$.extend(SLB, {"context":["public","user_guest"]});} }})})(jQuery);}/* ]]> */ ```