Débuter avec l'OCR en C# ; et VB.NET

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR est une bibliothèque logicielle C# permettant aux développeurs de logiciels de la plateforme .NET de reconnaître et de lire du texte à partir d'images et de documents PDF. Il s'agit d'une bibliothèque OCR .NET pure utilisant le moteur Tesseract le plus avancé connu à ce jour.

Installation

Installer avec le gestionnaire de packages NuGet

Installez IronOcr dans Visual Studio ou en ligne de commande avec le gestionnaire de packages NuGet. Dans Visual Studio, accédez à la console avec :

  • Outils ->
  • Gestionnaire de packages NuGet ->
  • Console du gestionnaire de paquets
Install-Package IronOcr

Consultez la page IronOCR sur NuGet pour en savoir plus sur les mises à jour de version et l'installation.

D'autres packages NuGet IronOCR sont disponibles pour différentes plateformes :

IronOcr.Extensions.AdvancedScan pour Linux et macOS

Ce package est destiné aux utilisateurs de Linux et de Mac qui souhaitent également bénéficier des fonctionnalités avancées d'IronOcr.

Dépannage

Avec la nouvelle mise à jour de ce package, IronOCR combine les dépendances OpenCV au sein du package afin de le simplifier, si les développeurs important actuellement les dépendances OpenCV obtiennent l'erreur suivante.

The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)

Vous pouvez supprimer sans risque les espaces de noms OpenCV, et le problème sera résolu.

Téléchargez le fichier .ZIP d'IronOCR

Vous pouvez également choisir de télécharger IronOCR via un fichier .ZIP. Cliquez ici pour télécharger directement la DLL . Une fois le fichier .zip téléchargé :

Instructions d'installation de .NET Framework 4.0+ :

  • Incluez le fichier IronOcr.dll du dossier net40 dans votre projet.
  • Et ensuite, ajouter des références d'assemblage à :

    • System.Configuration
    • System.Drawing
    • Système.Web

Instructions pour .NET Standard, .NET Core 2.0+ et .NET 5

  • Incluez le fichier IronOcr.dll du dossier netstandard2.0 dans votre projet.
  • Ajoutez ensuite une référence de package NuGet à :

    • System.Drawing.Common 4.7 ou supérieur

Télécharger le programme d'installation d'IronOCR (Windows uniquement)

Une autre option consiste à télécharger notre programme d'installation IronOCR qui installera toutes les ressources nécessaires au fonctionnement immédiat d'IronOCR. Veuillez noter que cette option est uniquement disponible pour les systèmes Windows. Pour télécharger le programme d'installation, veuillez cliquer ici . Une fois le fichier .zip téléchargé :

Instructions d'installation de .NET Framework 4.0+ :

  • Incluez le fichier IronOcr.dll du dossier net40 dans votre projet.
  • Et ensuite, ajouter des références d'assemblage à :

    • System.Configuration
    • System.Drawing
    • Système.Web

Instructions pour .NET Standard, .NET Core 2.0+ et .NET 5

  • Incluez le fichier IronOcr.dll du dossier netstandard2.0 dans votre projet.
  • Ajoutez ensuite une référence de package NuGet à :

    • System.Drawing.Common 4.7 ou supérieur

Pourquoi choisir IronOCR ?

IronOCR est une bibliothèque logicielle .NET facile à installer, complète et bien documentée.

Choisissez IronOCR pour obtenir une précision OCR supérieure à 99,8 % sans utiliser de services Web externes, sans frais récurrents ni envoyer de documents confidentiels sur Internet.

Pourquoi les développeurs C# choisissent IronOCR plutôt que Tesseract standard :

  • Installer sous forme de DLL unique ou de NuGet
  • Comprend les moteurs Tesseract 5, 4 et 3 dès la sortie de la boîte.
  • Une précision de 99,8 % surpasse nettement celle du Tesseract classique.
  • Vitesse fulgurante et multithreading
  • Compatible avec les applications MVC, Web, de bureau, console et serveur
  • Aucun fichier exécutable ni code C++ à utiliser
  • Prise en charge complète de la reconnaissance optique de caractères (OCR) pour les fichiers PDF
  • Effectuer une reconnaissance optique de caractères (OCR) sur presque tous les fichiers image ou PDF.
  • Prise en charge complète de .NET Core, Standard et Framework
  • Déploiement sur Windows, Mac, Linux, Azure, Docker, Lambda et AWS
  • Lire les codes-barres et les codes QR
  • Exporter les résultats de l'OCR au format XHTML
  • Exporter les données OCR vers des documents PDF consultables
  • Prise en charge du multithreading
  • 125 langues internationales, toutes gérées via NuGet ou des fichiers OcrData
  • Extraire les images, les coordonnées, les statistiques et les polices de caractères. Pas seulement du texte.
  • Peut être utilisé pour redistribuer Tesseract OCR au sein d'applications commerciales et propriétaires.

IronOCR excelle lorsqu'il s'agit de traiter des images réelles et des documents imparfaits tels que des photographies ou des numérisations basse résolution pouvant présenter du bruit numérique ou des imperfections.

D'autres bibliothèques OCR gratuites pour la plateforme .NET, telles que d'autres API Tesseract .NET et services Web, ne sont pas aussi performantes dans ces cas d'utilisation concrets.

OCR avec Tesseract 5 - Commencez à coder en C

L'exemple de code ci-dessous montre à quel point il est facile de lire du texte à partir d'une image en utilisant C# ou VB .NET.

Ligne courte

:path=/static-assets/ocr/content-code-examples/get-started/get-started-1.cs
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
Dim Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
$vbLabelText   $csharpLabel

Bonjour le monde configurable

:path=/static-assets/ocr/content-code-examples/get-started/get-started-2.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();

// Add multiple images
input.LoadImage("images/sample.jpeg");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using

' Add multiple images
input.LoadImage("images/sample.jpeg")

Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

OCR PDF en C

La même approche peut être utilisée pour extraire du texte de n'importe quel document PDF.

:path=/static-assets/ocr/content-code-examples/get-started/get-started-3.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();

// We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password: "password");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);

// 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages");
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using

' We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password:= "password")

Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)

' 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages")
$vbLabelText   $csharpLabel

Exporter les résultats de l'OCR au format PDF consultable

:path=/static-assets/ocr/content-code-examples/get-started/get-started-4.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("multi-frame.tiff", pageindices);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("multi-frame.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

Codes-barres et QR

L'une des caractéristiques uniques d'IronOCR est sa capacité à lire les codes-barres et les codes QR des documents tout en effectuant une analyse de texte. Les instances de la classe OcrResult.OcrBarcode fournissent au développeur des informations détaillées sur chaque code-barres scanné.

:path=/static-assets/ocr/content-code-examples/get-started/get-started-5.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using OcrInput input = new OcrInput();
input.LoadImage("img/Barcode.png");

OcrResult Result = ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
    // type and location properties also exposed
    Console.WriteLine(Barcode.Value);
}
Imports IronOcr

Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True

Using input As New OcrInput()
	input.LoadImage("img/Barcode.png")
	
	Dim Result As OcrResult = ocr.Read(input)
	For Each Barcode In Result.Barcodes
		' type and location properties also exposed
		Console.WriteLine(Barcode.Value)
	Next Barcode
End Using
$vbLabelText   $csharpLabel

OCR sur des zones spécifiques des images

Toutes les méthodes de numérisation et de lecture d'IronOCR offrent la possibilité de spécifier précisément la partie d'une ou plusieurs pages dont nous souhaitons lire le texte. C'est très utile lorsqu'on examine des formulaires standardisés ; cela permet de gagner beaucoup de temps et d'améliorer l'efficacité.

Pour utiliser les zones de recadrage, nous devrons ajouter une référence système à System.Drawing afin de pouvoir utiliser l'objet System.Drawing.Rectangle .

:path=/static-assets/ocr/content-code-examples/get-started/get-started-6.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();

// Dimensions are in pixel
var contentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };

input.LoadImage("document.png", contentArea);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using

' Dimensions are in pixel
Private contentArea = New System.Drawing.Rectangle() With {
	.X = 215,
	.Y = 1250,
	.Height = 280,
	.Width = 1335
}

input.LoadImage("document.png", contentArea)

Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

OCR pour les numérisations de faible qualité

La classe IronOCR OcrInput peut corriger les scans que Tesseract normal ne peut pas lire.

:path=/static-assets/ocr/content-code-examples/get-started/get-started-7.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);

// fixes digital noise and poor scanning
input.DeNoise();

// fixes rotation and perspective
input.Deskew();

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageindices)

' fixes digital noise and poor scanning
input.DeNoise()

' fixes rotation and perspective
input.Deskew()

Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

Exporter les résultats de la reconnaissance optique de caractères (OCR) au format PDF consultable

:path=/static-assets/ocr/content-code-examples/get-started/get-started-8.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Quarterly Report";
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Quarterly Report"
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("image3.gif", pageindices)

Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
$vbLabelText   $csharpLabel

Conversion de TIFF en PDF consultable

:path=/static-assets/ocr/content-code-examples/get-started/get-started-9.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf")
$vbLabelText   $csharpLabel

Exporter les résultats de la reconnaissance optique de caractères (OCR) au format HTML

:path=/static-assets/ocr/content-code-examples/get-started/get-started-10.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Html Title";
input.LoadImage("image1.jpeg");

OcrResult Result = ocr.Read(input);
Result.SaveAsHocrFile("results.html");
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Html Title"
input.LoadImage("image1.jpeg")

Dim Result As OcrResult = ocr.Read(input)
Result.SaveAsHocrFile("results.html")
$vbLabelText   $csharpLabel

Filtres d'amélioration d'image OCR

IronOCR fournit des filtres uniques aux objets OcrInput afin d'améliorer les performances de la reconnaissance optique de caractères (OCR).

Exemple de code d'amélioration d'image

:path=/static-assets/ocr/content-code-examples/get-started/get-started-11.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadImage("LowQuality.jpeg");

// fixes digital noise and poor scanning
input.DeNoise();

// fixes rotation and perspective
input.Deskew();

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadImage("LowQuality.jpeg")

' fixes digital noise and poor scanning
input.DeNoise()

' fixes rotation and perspective
input.Deskew()

Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

Liste des filtres d'images OCR

IronOCR intègre des filtres d'entrée permettant d'améliorer les performances de la reconnaissance optique de caractères (OCR) :

  • OcrInput.Rotate(double degrees) - Fait pivoter les images d'un certain nombre de degrés dans le sens horaire. Pour une rotation dans le sens antihoraire, utilisez des nombres négatifs.
  • OcrInput.Binarize() - Ce filtre convertit chaque pixel en noir ou en blanc sans nuance intermédiaire, ce qui peut améliorer les performances de l'OCR dans les images à très faible contraste.
  • OcrInput.ToGrayScale() - Convertit chaque pixel en une nuance de gris. Cela n'améliorera peut-être pas la précision, mais pourrait améliorer la vitesse.
  • OcrInput.Contrast() - Augmente automatiquement le contraste, améliorant souvent la vitesse et la précision des numérisations à faible contraste.
  • OcrInput.DeNoise() - Supprime le bruit numérique, recommandé uniquement lorsque du bruit est attendu.
  • OcrInput.Invert() - Inverse toutes les couleurs (le blanc devient noir et vice versa).
  • OcrInput.Dilate() - Avance la morphologie, ajoute des pixels aux contours de l'objet, opposé à Erode.
  • OcrInput.Erode() - Avance la morphologie, supprime les pixels des contours de l'objet, opposé à Dilate.
  • OcrInput.Deskew() - Fait pivoter une image pour l'orienter correctement. Utile car la tolérance à l'asymétrie de Tesseract est limitée.
  • OcrInput.EnhanceResolution - Améliore la résolution des images de faible qualité. Ce paramètre est généralement utilisé pour gérer automatiquement les entrées à faible résolution (DPI).
  • EnhanceResolution détecte les images basse résolution (inférieures à 275 ppp), les agrandit et améliore la netteté du texte pour de meilleurs résultats de reconnaissance optique de caractères (OCR). Bien que chronophage, cette méthode réduit souvent la durée globale des opérations de reconnaissance optique de caractères (OCR).
  • Language - Prend en charge la sélection parmi 22 packs de langues internationales.
  • Strategy - Permet de choisir entre des stratégies rapides et moins précises ou des stratégies avancées (utilisant l'IA pour plus de précision) en fonction de la relation statistique des mots.
  • ColorSpace - Choisissez d'effectuer la reconnaissance optique de caractères en niveaux de gris ou en couleur ; Le niveau de gris est généralement optimal, bien que la couleur puisse être préférable dans certains cas de contraste.
  • DetectWhiteTextOnDarkBackgrounds - S'adapte aux images négatives, détectant et lisant automatiquement le texte blanc sur fond sombre.
  • InputImageType - Indique à la bibliothèque OCR si elle travaille sur un document complet ou sur un extrait.
  • RotateAndStraighten - Permet à IronOCR de gérer correctement les documents pivotés ou affectés par des distorsions de perspective.
  • ReadBarcodes - Lit automatiquement les codes-barres et les codes QR simultanément à la numérisation de texte sans ajout de temps significatif.
  • ColorDepth - Détermine le nombre de bits par pixel pour la profondeur de couleur dans le processus OCR. Une plus grande profondeur peut améliorer la qualité, mais aussi le temps de traitement.

125 packs de langues

IronOCR prend en charge 125 langues internationales via des modules linguistiques distribués sous forme de DLL, disponibles en téléchargement sur ce site web ou via le gestionnaire de packages NuGet .

Les langues parlées incluent notamment l'allemand, le français, l'anglais, le chinois et le japonais. Des packs de langue spécialisés existent pour les zones de reconnaissance optique de caractères (MRZ), les contrôles MICR, les données financières, les plaques d'immatriculation, etc. De plus, des fichiers tesseract personnalisés " .traineddata " peuvent être utilisés.

Exemple de langue

// Reference to the path of the source file that demonstrates setting language packs for OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-12.cs
// Reference to the path of the source file that demonstrates setting language packs for OCR
using IronOcr;

// PM> Install IronOcr.Languages.Arabic
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;

using OcrInput input = new OcrInput();

var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("img/arabic.gif", pageindices);
// Add image filters if needed
// In this case, even thought input is very low quality
// IronTesseract can read what conventional Tesseract cannot.
OcrResult result = ocr.Read(input);
// Console can't print Arabic on Windows easily.
// Let's save to disk instead.
result.SaveAsTextFile("arabic.txt");
' Reference to the path of the source file that demonstrates setting language packs for OCR
Imports IronOcr

' PM> Install IronOcr.Languages.Arabic
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic

Using input As New OcrInput()
	
	Dim pageindices = New Integer() { 1, 2 }
	input.LoadImageFrames("img/arabic.gif", pageindices)
	' Add image filters if needed
	' In this case, even thought input is very low quality
	' IronTesseract can read what conventional Tesseract cannot.
	Dim result As OcrResult = ocr.Read(input)
	' Console can't print Arabic on Windows easily.
	' Let's save to disk instead.
	result.SaveAsTextFile("arabic.txt")
End Using
$vbLabelText   $csharpLabel

Exemple multilingue

Il est également possible d'effectuer une reconnaissance optique de caractères (OCR) en utilisant plusieurs langues simultanément. Cela peut améliorer l'OCR des métadonnées anglaises et des URL dans les documents Unicode.

// Reference to the path of the source file that demonstrates multi-language OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-13.cs
// Reference to the path of the source file that demonstrates multi-language OCR
using IronOcr;

// PM> Install IronOcr.Languages.ChineseSimplified
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;

// We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English);

using OcrInput input = new OcrInput();
input.LoadPdf("multi-language.pdf");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("results.txt");
' Reference to the path of the source file that demonstrates multi-language OCR
Imports IronOcr

' PM> Install IronOcr.Languages.ChineseSimplified
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified

' We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English)

Using input As New OcrInput()
	input.LoadPdf("multi-language.pdf")
	Dim result As OcrResult = ocr.Read(input)
	result.SaveAsTextFile("results.txt")
End Using
$vbLabelText   $csharpLabel

Résultats détaillés de la reconnaissance optique de caractères (OCR) : Objets

IronOCR renvoie un objet de résultat OCR pour chaque opération. En général, les développeurs accèdent à la propriété Text pour obtenir le texte scanné. Cependant, l'objet de résultats contient des informations beaucoup plus détaillées.

// Reference to the path of the source file demonstrating detailed OCR result object usage
:path=/static-assets/ocr/content-code-examples/get-started/get-started-14.cs
// Reference to the path of the source file demonstrating detailed OCR result object usage
using IronOcr;

IronTesseract ocr = new IronTesseract();

// Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\sample.tiff", pageindices);

OcrResult result = ocr.Read(input);
var pages = result.Pages;
var words = pages[0].Words;
var barcodes = result.Barcodes;
// Explore here to find a massive, detailed API:
// - Pages, Blocks, Paraphaphs, Lines, Words, Chars
// - Image Export, Fonts Coordinates, Statistical Data, Tables
' Reference to the path of the source file demonstrating detailed OCR result object usage
Imports IronOcr

Private ocr As New IronTesseract()

' Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
	Dim pageindices = New Integer() { 1, 2 }
	input.LoadImageFrames("img\sample.tiff", pageindices)
	
	Dim result As OcrResult = ocr.Read(input)
	Dim pages = result.Pages
	Dim words = pages(0).Words
	Dim barcodes = result.Barcodes
	' Explore here to find a massive, detailed API:
	' - Pages, Blocks, Paraphaphs, Lines, Words, Chars
	' - Image Export, Fonts Coordinates, Statistical Data, Tables
End Using
$vbLabelText   $csharpLabel

Performance

IronOCR fonctionne immédiatement, sans nécessiter de réglage des performances ni de modification de l'image.

La vitesse est fulgurante : IronOcr.2020+ est jusqu'à 10 fois plus rapide et commet plus de 250 % d'erreurs en moins que les versions précédentes.

Apprendre encore plus

Pour en savoir plus sur la reconnaissance optique de caractères (OCR) en C#, VB, F# ou tout autre langage .NET, veuillez consulter nos tutoriels communautaires , qui fournissent des exemples concrets d'utilisation d'IronOCR et illustrent les subtilités de l'optimisation de la bibliothèque.

Une documentation complète de l'API est également disponible pour les développeurs .NET .

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Revu par
Jeff Fritz
Jeffrey T. Fritz
Responsable principal du programme - Équipe de la communauté .NET
Jeff est également responsable principal du programme pour les équipes .NET et Visual Studio. Il est le producteur exécutif de la série de conférences virtuelles .NET Conf et anime 'Fritz and Friends', une diffusion en direct pour développeurs qui est diffusée deux fois par semaine où il parle de technologie et écrit du code avec les téléspectateurs. Jeff écrit des ateliers, des présentations et prévoit du contenu pour les plus grands événements de développement Microsoft, y compris Microsoft Build, Microsoft Ignite, .NET Conf et le sommet Microsoft MVP
Prêt à commencer?
Nuget Téléchargements 5,384,824 | Version : 2026.2 vient de sortir