Deteksi teks dalam gambar

Layanan Pengenalan Karakter Optik (OCR) Vertex AI di Google Distributed Cloud (GDC) dengan air gap mendeteksi teks dalam gambar menggunakan metode API BatchAnnotateImages. Layanan ini mendukung file JPEG dan PNG untuk gambar.

Halaman ini menunjukkan cara mendeteksi teks gambar menggunakan OCR API di Distributed Cloud.

Sebelum memulai

Untuk mendeteksi teks dalam gambar, hubungi Admin Project IAM Anda untuk meminta peran AI OCR Developer (ai-ocr-developer) di namespace project Anda.

Untuk mengetahui informasi selengkapnya tentang peran ini, lihat Menyiapkan izin IAM.

Sebelum dapat mulai menggunakan OCR API, Anda harus memiliki project dengan OCR API yang diaktifkan dan memiliki kredensial yang sesuai. Anda juga dapat menginstal library klien untuk membantu melakukan panggilan ke API. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan project pengenalan karakter.

Mendeteksi teks dari file JPEG dan PNG

Metode BatchAnnotateImages mendeteksi teks dari batch file JPEG atau PNG. Anda mengirim file yang teksnya ingin Anda deteksi secara langsung sebagai konten dalam permintaan API. Sistem akan menampilkan teks yang terdeteksi dalam format JSON di respons API.

Anda harus menentukan nilai untuk kolom dalam isi JSON permintaan API Anda. Tabel berikut berisi deskripsi kolom isi permintaan yang harus Anda berikan saat menggunakan metode BatchAnnotateImages API untuk permintaan deteksi teks:

Kolom isi permintaan Deskripsi kolom
content Gambar dengan teks yang akan dideteksi. Anda memberikan representasi Base64 (string ASCII) dari data gambar biner Anda.
type Jenis deteksi teks yang Anda perlukan dari gambar.

Tentukan salah satu dari dua fitur anotasi:
  • TEXT_DETECTION mendeteksi dan mengekstrak teks dari gambar apa pun. Respons JSON mencakup string yang diekstrak, setiap kata, dan kotak pembatasnya.
  • DOCUMENT_TEXT_DETECTION juga mengekstrak teks dari gambar, tetapi layanan ini mengoptimalkan respons untuk teks dan dokumen yang padat. JSON mencakup informasi halaman, blok, paragraf, kata, dan jeda.
Untuk mengetahui informasi selengkapnya tentang fitur anotasi ini, lihat Fitur pengenalan karakter optis.
language_hints Opsional. Daftar bahasa yang akan digunakan untuk deteksi teks.

Sistem menafsirkan nilai kosong untuk kolom ini sebagai deteksi bahasa otomatis.

Anda tidak perlu menetapkan kolom language_hints untuk bahasa yang didasarkan pada alfabet Latin.

Jika Anda mengetahui bahasa teks dalam gambar, menyetel petunjuk akan meningkatkan hasil.

Untuk mengetahui informasi tentang representasi JSON lengkap, lihat AnnotateImageRequest.

Membuat permintaan API

Buat permintaan ke API terlatih OCR menggunakan metode REST API. Atau, berinteraksi dengan API terlatih OCR dari skrip Python untuk mendeteksi teks dari file JPEG atau PNG.

Contoh berikut menunjukkan cara mendeteksi teks dalam gambar menggunakan OCR:

REST

Ikuti langkah-langkah berikut untuk mendeteksi teks dalam gambar menggunakan metode REST API:

  1. Simpan file request.json berikut untuk isi permintaan Anda:

    cat <<- EOF > request.json
    {
      "requests": [
        {
          "image": {
            "content": BASE64_ENCODED_IMAGE
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "image_context": {
            "language_hints": [
              "LANGUAGE_HINT_1",
              "LANGUAGE_HINT_2",
              ...
            ]
          }
        }
      ]
    }
    EOF
    

    Ganti kode berikut:

    • BASE64_ENCODED_IMAGE: representasi Base64 (string ASCII) dari data gambar biner Anda. String ini diawali dengan karakter yang terlihat mirip dengan /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: jenis deteksi teks yang Anda perlukan dari gambar. Nilai yang diizinkan adalah TEXT_DETECTION atau DOCUMENT_TEXT_DETECTION.
    • LANGUAGE_HINT: tag bahasa BCP 47 yang akan digunakan sebagai petunjuk bahasa untuk deteksi teks, seperti en-t-i0-handwrit. Kolom ini bersifat opsional dan sistem akan menafsirkan nilai kosong sebagai deteksi bahasa otomatis.
  2. Dapatkan token autentikasi.

  3. Buat permintaan:

    curl

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "x-goog-user-project: projects/PROJECT_ID" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      https://ENDPOINT/v1/images:annotate
    

    Ganti kode berikut:

    PowerShell

    $headers = @{
      "Authorization" = "Bearer TOKEN"
      "x-goog-user-project" = "projects/PROJECT_ID"
    }
    
    Invoke-WebRequest
      -Method POST
      -Headers $headers
      -ContentType: "application/json; charset=utf-8"
      -InFile request.json
      -Uri "ENDPOINT/v1/images:annotate" | Select-Object -Expand Content
    

    Ganti kode berikut:

Python

Ikuti langkah-langkah berikut untuk menggunakan layanan OCR dari skrip Python guna mendeteksi teks dalam gambar:

  1. Instal library klien OCR versi terbaru.

  2. Tetapkan variabel lingkungan yang diperlukan pada skrip Python.

  3. Mengautentikasi permintaan API Anda.

  4. Tambahkan kode berikut ke skrip Python yang Anda buat:

    from google.cloud import vision
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience = "https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def vision_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return vision.ImageAnnotatorClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def vision_func(creds):
      vc = vision_client(creds)
      image = {"content": "BASE64_ENCODED_IMAGE"}
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      # Each requests element corresponds to a single image. To annotate more
      # images, create a request element for each image and add it to
      # the array of requests
      req = {"image": image, "features": features}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      resp = vc.annotate_image(req,metadata=metadata)
    
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      vision_func(creds)
    

    Ganti kode berikut:

    • ENDPOINT: endpoint OCR yang Anda gunakan untuk organisasi Anda. Untuk mengetahui informasi selengkapnya, lihat status dan endpoint layanan.
    • BASE64_ENCODED_IMAGE: representasi Base64 (string ASCII) dari data gambar biner Anda. String ini diawali dengan karakter yang terlihat mirip dengan /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: jenis deteksi teks yang Anda perlukan dari gambar. Nilai yang diizinkan adalah TEXT_DETECTION atau DOCUMENT_TEXT_DETECTION.
    • PROJECT_ID: project ID Anda.
  5. Simpan skrip Python.

  6. Jalankan skrip Python untuk mendeteksi teks dalam gambar:

    python SCRIPT_NAME
    

    Ganti SCRIPT_NAME dengan nama yang Anda berikan ke skrip Python, seperti vision.py.