Installera Read OCR Docker-containrar

Anteckning

Från och med september 22 2020 finns de flesta gated-behållare som finns på Microsoft Container Registry och hämtningen kräver inte att du använder kommandot Docker login. Du måste fortfarande slutföra en online-begäran för att köra behållaren. Mer information finns i avsnittet begära godkännande för att köra behållaren senare i artikeln.

Med containrar kan du köra API:erna för Visuellt innehåll i din egen miljö. Containrar är bra för specifika säkerhets- och datastyrningskrav. I den här artikeln lär du dig att ladda ned, installera och köra Visuellt innehåll containrar.

Med Read OCR-containern kan du extrahera tryckt och handskriven text från bilder och dokument med stöd för filformaten JPEG, PNG, BMP, PDF och TIFF. Mer information finns i läs-API:et i guiden.

Nyheter

För befintliga användare av Read-containrarna finns en ny version av read-containern tillgänglig med stöd för 122 språk och allmänna prestanda- och 3.2-model-2021-09-30-preview AI-förbättringar. Kom igång genom att följa anvisningarna för nedladdning.

Read 3.2-container

Read 3.2 OCR-containern innehåller:

  • Nya modeller för förbättrad noggrannhet.
  • Stöd för flera språk i samma dokument.
  • Stöd för totalt 73 språk. Se den fullständiga listan över OCR-språk som stöds.
  • En enda åtgärd för både dokument och bilder.
  • Stöd för större dokument och bilder.
  • Förtroendepoäng.
  • Stöd för dokument med både utskrifts- och handskriven text.
  • Möjlighet att extrahera text från endast valda sidor i ett dokument.
  • Välj utdataordning för textrad från standard till en mer naturlig läsordning endast för latinska språk.
  • Textradsklassificering som handskriven stil eller inte endast för latinska språk.

Om du använder Read 2.0-containrar idag kan du läsa om ändringar i de nya versionerna i migreringsguiden.

Förutsättningar

Du måste uppfylla följande krav innan du använder containrarna:

Obligatorisk Syfte
Docker-motorn Docker-motorn måste vara installerad på en värddator. Docker innehåller paket som konfigurerar Docker-miljön på macOS, Windows och Linux. En introduktion till grunderna för Docker och containrar finns i Docker-översikt.

Docker måste konfigureras så att containrarna kan ansluta till och skicka faktureringsdata till Azure.

I Windows måste Docker också konfigureras för att stödja Linux-containrar.

Kunskaper om Docker Du bör ha grundläggande kunskaper om Docker-begrepp som register, lagringsdatabaser, containrar och containeravbildningar samt kunskaper om grundläggande docker kommandon.
Visuellt innehåll resurs För att kunna använda containern måste du ha:

En Azure Visuellt innehåll resurs och den associerade API-nyckeln slutpunktens URI. Båda värdena är tillgängliga på sidorna Översikt och Nycklar för resursen och krävs för att starta containern.

{API_KEY}: En av de två tillgängliga resursnycklarna på sidan Nycklar

{ENDPOINT_URI}: Slutpunkten som anges på översiktssidan

Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Begära godkännande för att köra containern

Fyll i och skicka formuläret för begäran för att begära godkännande för att köra containern.

Formuläret efterfrågar information om dig, ditt företag och användar scenariot som du använder behållaren för. När du har skickat formuläret granskar Azure Cognitive Services-teamet det och skickar ett meddelande till dig med ett beslut.

Viktigt

  • I formuläret måste du använda en e-postadress som är kopplad till ett Azure-prenumerations-ID.
  • Den Azure-resurs som du använder för att köra behållaren måste ha skapats med det godkända Azure-prenumerations-ID: t.
  • Kontrol lera din e-postadress (både Inkorgen och skräppostmappen) för uppdateringar av status för ditt program från Microsoft.

När du har godkänt kan du köra behållaren efter att ha laddat ned den från Microsoft Container Registry (MCR), som beskrivs längre fram i artikeln.

Du kommer inte att kunna köra behållaren om din Azure-prenumeration inte har godkänts.

Nödvändiga parametrar samlas in

Det finns tre primära parametrar för alla Cognitive Services behållare som krävs. Licens avtalet för slutanvändare (EULA) måste vara närvarande med värdet accept . Dessutom behövs både en slut punkts-URL och API-nyckel.

Slut punkts-URI {ENDPOINT_URI}

URI-värdet för slut punkten är tillgängligt på sidan Azure Portal Översikt för motsvarande kognitiva tjänst resurs. Gå till sidan Översikt , Hovra över slut punkten och en Copy to clipboard ikon visas. Kopiera och använd vid behov.

Samla in slut punkts-URI för senare användning

Nyckel {API_KEY}

Den här nyckeln används för att starta behållaren och är tillgänglig på sidan Azure Portals nycklar för motsvarande kognitiva tjänst resurser. Gå till sidan nycklar och klicka på Copy to clipboard ikonen.

Hämta en av de två nycklarna för senare användning

Viktigt

Dessa prenumerations nycklar används för att få åtkomst till ditt kognitiva tjänst-API. Dela inte dina nycklar. Lagra dem på ett säkert sätt, till exempel med hjälp av Azure Key Vault. Vi rekommenderar också att du återskapar nycklarna regelbundet. Endast en nyckel krävs för att göra ett API-anrop. När du återskapar den första nyckeln kan du använda den andra nyckeln för fortsatt åtkomst till tjänsten.

Värddatorn

Värden är en x64-baserad dator som kör Docker-behållaren. Det kan vara en dator på din lokala dator eller en Docker-värd tjänst i Azure, till exempel:

Stöd för avancerat vektortillägg

Värddatorn är den dator som kör Docker-containern. Värden måste ha stöd för Advanced Vector Extensions (AVX2). Du kan söka efter AVX2-stöd på Linux-värdar med följande kommando:

grep -q avx2 /proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detected

Varning

Värddatorn krävs för att stödja AVX2. Containern fungerar inte korrekt utan STÖD för AVX2.

Krav och rekommendationer för containrar

Anteckning

Kraven och rekommendationerna baseras på benchmark-fel med en enskild begäran per sekund, med en bild på 523 KB av en skannad företagsbokstav som innehåller 29 rader och totalt 803 tecken. Den rekommenderade konfigurationen resulterade i ungefär 2 gånger snabbare svar jämfört med den minsta konfigurationen.

I följande tabell beskrivs den lägsta och rekommenderade allokeringen av resurser för varje Read OCR-container.

Container Minimum Rekommenderas
Läs 2.0-förhandsversion 1 kärna, 8 GB minne 8 kärnor, 16 GB minne
Läs 3.2 4 kärnor, 16 GB minne 8 kärnor, 24 GB minne
  • Varje kärna måste vara minst 2,6 gigahertz (GHz) eller snabbare.

Kärna och minne motsvarar inställningarna --cpus och , som används som en del av kommandot --memory docker run .

Hämta containeravbildningen med docker pull

Containeravbildningar för Läsa är tillgängliga.

Container Container Registry/lagringsplats/avbildningsnamn
Läs 3.2-modell-2021-09-30-preview mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2021-09-30-preview
Läs 3.2 mcr.microsoft.com/azure-cognitive-services/vision/read:3.2
Läs 2.0-förhandsgranskning mcr.microsoft.com/azure-cognitive-services/vision/read:2.0-preview

Använd kommandot docker pull för att ladda ned en containeravbildning.

Docker-pull för Read OCR-containern

För den senaste förhandsversionen:

docker pull mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2021-09-30-preview
docker pull mcr.microsoft.com/azure-cognitive-services/vision/read:3.2

Tips

Du kan använda kommandot Docker images för att visa en lista över hämtade behållar avbildningar. Följande kommando visar till exempel ID, lagrings plats och tagg för varje Hämtad behållar avbildning, formaterad som en tabell:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Så här använder du containern

När containern finns på värddatornanvänder du följande process för att arbeta med containern.

  1. Kör containernmed de faktureringsinställningar som krävs. Fler exempeldocker run kommandot är tillgängliga.
  2. Fråga containerns förutsägelseslutpunkt.

Kör containern med docker run

Använd kommandot docker run för att köra containern. Information om hur du hämtar värdena och finns i samla in obligatoriska {ENDPOINT_URI} {API_KEY} parametrar.

Exempeldocker run kommandot är tillgängliga.

För den senaste förhandsversionen ersätter du 3.2-sökvägen med:

mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2021-09-30-preview
docker run --rm -it -p 5000:5000 --memory 18g --cpus 8 \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2 \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Det här kommandot:

  • Kör Read OCR-containern från containeravbildningen.
  • Allokerar 8 processorkärnor och 18 GB minne.
  • Exponerar TCP-port 5000 och allokerar en pseudo-TTY för containern.
  • Tar automatiskt bort containern när den har avslutats. Containeravbildningen är fortfarande tillgänglig på värddatorn.

Du kan också köra containern med hjälp av miljövariabler:

docker run --rm -it -p 5000:5000 --memory 18g --cpus 8 \
--env Eula=accept \
--env Billing={ENDPOINT_URI} \
--env ApiKey={API_KEY} \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2

Fler exempeldocker run kommandot är tillgängliga.

Viktigt

Alternativen Eula Billing , och måste anges för att ApiKey köra containern. Annars startar inte containern. Mer information finns i Fakturering.

Om du behöver högre dataflöde (till exempel vid bearbetning av filer med flera sidor) bör du överväga att distribuera flera containrar i ett Kubernetes-klustermed hjälp Azure Storage och Azure Queue.

Om du använder en Azure Storage för att lagra avbildningar för bearbetning kan du skapa en anslutningssträng som ska användas när du anropar containern.

Så här hittar du anslutningssträngen:

  1. Gå till Storage kontona på Azure Portal och leta reda på ditt konto.
  2. Klicka på Åtkomstnycklar i den vänstra navigeringslistan.
  3. Anslutningssträngen finns under Anslutningssträng

Kör flera behållare på samma värd

Om du tänker köra flera behållare med exponerade portar ska du se till att köra varje behållare med en annan exponerad port. Kör till exempel den första behållaren på port 5000 och den andra behållaren på port 5001.

Du kan ha den här behållaren och en annan Azure Cognitive Services-behållare som körs på värden tillsammans. Du kan också ha flera behållare av samma Cognitive Services-behållare som kör.

Verifiera att en behållare körs

Det finns flera sätt att verifiera att behållaren körs. Leta reda på den externa IP- adressen och den exponerade porten för den aktuella behållaren och öppna din favorit webbläsare. Använd de olika URL: erna för begäran nedan för att verifiera att behållaren körs. URL: erna för exempel begär Anden som anges nedan är http://localhost:5000 , men din speciella behållare kan variera. Tänk på att du är beroende av behållarens externa IP -adress och exponerad port.

URL för begäran Syfte
http://localhost:5000/ Containern tillhandahåller en startsida.
http://localhost:5000/ready Begärd med GET, detta ger en verifiering av att behållaren är redo att acceptera en fråga mot modellen. Den här begäran kan användas för Kubernetes Live och beredskaps avsökningar.
http://localhost:5000/status Begärd med GET, kontrollerar detta om den API-nyckel som används för att starta behållaren är giltig utan att orsaka en slut punkts fråga. Den här begäran kan användas för Kubernetes Live och beredskaps avsökningar.
http://localhost:5000/swagger Containern tillhandahåller en fullständig uppsättning dokumentation för slutpunkterna samt en Prova-funktion. Med den här funktionen kan du ange dina inställningar i ett webbaserat HTML-formulär och göra frågan utan att behöva skriva någon kod. När frågan returnerar visas ett exempel på ett spiral kommando som visar de HTTP-rubriker och det text format som krävs.

Behållarens start sida

Köra frågor mot containerns förutsägelseslutpunkt

Containern innehåller REST-baserade slutpunkts-API:er för frågeförutsägelse.

För den senaste förhandsversionen:

Använd samma Swagger-sökväg som 3.2 men en annan port om du redan har distribuerat 3.2 på 5 000-porten.

Använd värden, http://localhost:5000, för container-API:er. Du kan visa Swagger-sökvägen på: http://localhost:5000/swagger/vision-v3.2-read/swagger.json .

Asynkron läsning

För den senaste förhandsversionen är allt detsamma som 3.2 förutom den ytterligare "modelVersion": "2021-09-30-preview" .

Du kan använda åtgärderna och tillsammans för att asynkront läsa en bild, på samma sätt som POST /vision/v3.2/read/analyze GET /vision/v3.2/read/operations/{operationId} Visuellt innehåll-tjänsten använder motsvarande REST-åtgärder. Den asynkrona POST-metoden operationId returnerar en som används som identifer till HTTP GET-begäran.

Från Swagger UI väljer du för Analyze att expandera det i webbläsaren. Välj sedan Prova Välj > fil. I det här exemplet använder vi följande bild:

tabbar jämfört med blanksteg

När den asynkrona POST har körts returneras statuskoden HTTP 202. Som en del av svaret finns det ett operation-location -huvud som innehåller resultatslutpunkten för begäran.

 content-length: 0
 date: Fri, 04 Sep 2020 16:23:01 GMT
 operation-location: http://localhost:5000/vision/v3.2/read/operations/a527d445-8a74-4482-8cb3-c98a65ec7ef9
 server: Kestrel

är operation-location den fullständigt kvalificerade URL:en och nås via en HTTP GET. Här är JSON-svaret från körning av operation-location URL:en från föregående bild:

{
  "status": "succeeded",
  "createdDateTime": "2021-02-04T06:32:08.2752706+00:00",
  "lastUpdatedDateTime": "2021-02-04T06:32:08.7706172+00:00",
  "analyzeResult": {
    "version": "3.2.0",
    "readResults": [
      {
        "page": 1,
        "angle": 2.1243,
        "width": 502,
        "height": 252,
        "unit": "pixel",
        "lines": [
          {
            "boundingBox": [
              58,
              42,
              314,
              59,
              311,
              123,
              56,
              121
            ],
            "text": "Tabs vs",
            "appearance": {
              "style": {
                "name": "handwriting",
                "confidence": 0.96
              }
            },
            "words": [
              {
                "boundingBox": [
                  68,
                  44,
                  225,
                  59,
                  224,
                  122,
                  66,
                  123
                ],
                "text": "Tabs",
                "confidence": 0.933
              },
              {
                "boundingBox": [
                  241,
                  61,
                  314,
                  72,
                  314,
                  123,
                  239,
                  122
                ],
                "text": "vs",
                "confidence": 0.977
              }
            ]
          },
          {
            "boundingBox": [
              286,
              171,
              415,
              165,
              417,
              197,
              287,
              201
            ],
            "text": "paces",
            "appearance": {
              "style": {
                "name": "handwriting",
                "confidence": 0.746
              }
            },
            "words": [
              {
                "boundingBox": [
                  286,
                  179,
                  404,
                  166,
                  405,
                  198,
                  290,
                  201
                ],
                "text": "paces",
                "confidence": 0.938
              }
            ]
          }
        ]
      }
    ]
  }
}

Viktigt

Om du distribuerar flera Read OCR-containrar bakom en lastbalanserare, till exempel under Docker Compose eller Kubernetes, måste du ha en extern cache. Eftersom bearbetningscontainern och GET-begärandecontainern inte är samma lagrar en extern cache resultaten och delar dem mellan containrar. Mer information om cacheinställningar finns i Konfigurera Visuellt innehåll Docker-containrar.

Synkron läsning

Du kan använda följande åtgärd för att läsa en avbildning synkront.

POST /vision/v3.2/read/syncAnalyze

När bilden läses i sin helhet returnerar API:et först ett JSON-svar. Det enda undantaget är om ett fel inträffar. När ett fel inträffar returneras följande JSON:

{
    "status": "Failed"
}

JSON-svarsobjektet har samma objektdiagram som den asynkrona versionen. Om du är JavaScript-användare och vill ha typsäkerhet bör du överväga att använda TypeScript för att typge JSON-svaret.

Ett exempel på ett användningsfall finns i Sandbox-miljön för TypeScript här och väljer Kör för att visualisera dess användarvänlighet.

Stoppa containern

Om du vill stänga av behållaren går du till kommando rads miljön där behållaren körs och väljer CTRL + C.

Felsökning

Om du kör containern med en aktiverad utdatamontering och -loggning genererar containern loggfiler som är användbara för att felsöka problem som inträffar när du startar eller kör containern.

Tips

Mer felsöknings information och vägledning finns i Cognitive Services behållare vanliga frågor och svar.

Om du har problem med att köra en Cognitive Services-container kan du prova att använda Microsofts diagnostikcontainer. Använd den här containern till att diagnostisera vanliga fel i distributionsmiljön som kan förhindra att Cognitive Services-containrar fungerar som förväntat.

Hämta containern med följande Docker pull-kommando:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

Kör sedan containern, {ENDPOINT_URI} ersätt med slutpunkten och ersätt {API_KEY} med din nyckel till din resurs:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Containern testar nätverksanslutningen till faktureringsslutpunkten.

Fakturering

Containern Cognitive Services faktureringsinformation till Azure med hjälp av motsvarande resurs på ditt Azure-konto.

Frågor till containern debiteras på prisnivån för den Azure-resurs som används för ApiKey parametern .

Azure Cognitive Services-containrar är inte licensierade att köras utan att vara anslutna till slutpunkten för mätning/fakturering. Du måste göra så att containrarna alltid kan kommunicera faktureringsinformation med faktureringsslutpunkten. Cognitive Services-containrar skickar inte kunddata, till exempel den bild eller text som analyseras, till Microsoft.

Anslut till Azure

Containern behöver faktureringsargumentvärdena för att köras. Dessa värden gör att containern kan ansluta till faktureringsslutpunkten. Containern rapporterar användning var 10:e till 15:e minut. Om containern inte ansluter till Azure inom den tillåtna tidsperioden fortsätter containern att köras men kör inte frågor förrän faktureringsslutpunkten har återställts. Anslutningen görs 10 gånger med samma tidsintervall på 10 till 15 minuter. Om den inte kan ansluta till faktureringsslutpunkten inom de 10 försöken slutar containern att betjäna begäranden. Se vanliga Cognitive Services vanliga frågor och svar om containrar för ett exempel på den information som skickas till Microsoft för fakturering.

Faktureringsargument

docker run Kommandot startar containern när alla tre av följande alternativ har angetts med giltiga värden:

Alternativ Beskrivning
ApiKey API-nyckeln för Cognitive Services resurs som används för att spåra faktureringsinformation.
Värdet för det här alternativet måste anges till en API-nyckel för den etablerade resursen som anges i Billing .
Billing Slutpunkten för Cognitive Services resurs som används för att spåra faktureringsinformation.
Värdet för det här alternativet måste anges till slutpunkts-URI för en etablerad Azure-resurs.
Eula Anger att du har accepterat licensen för containern.
Värdet för det här alternativet måste anges för att acceptera.

Mer information om dessa alternativ finns i Konfigurera containrar.

Sammanfattning

I den här artikeln har du lärt dig begrepp och arbetsflöden för att ladda ned, installera och köra Visuellt innehåll containrar. Sammanfattningsvis:

  • Visuellt innehåll tillhandahåller en Linux-container för Docker som kapslar in Läsa.
  • Containeravbildningen read kräver att ett program kör den.
  • Containeravbildningar körs i Docker.
  • Du kan använda antingen REST API eller SDK för att anropa åtgärder i Read OCR-containrar genom att ange värd-URI för containern.
  • Du måste ange faktureringsinformation när du instansierar en container.

Viktigt

Cognitive Services-containrar är inte licensierade att köras utan att vara anslutna till Azure för mätning. Kunder måste göra det möjligt för containrarna att kommunicera faktureringsinformation med mätartjänsten hela tiden. Cognitive Services-containrar skickar inte kunddata (till exempel den bild eller text som analyseras) till Microsoft.

Nästa steg