Lewati ke konten utama

Tutorial Komprehensif tentang Optical Character Recognition (OCR) di Python dengan Pytesseract

Kuasai dasar-dasar optical character recognition dalam OCR dengan PyTesseract dan OpenCV.
Diperbarui 28 Sep 2026  · 11 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Mengapa Mempelajari Optical Character Recognition (OCR)?

Menyalin teks dari gambar dan dokumen secara manual bisa sangat melelahkan dan memakan waktu. Untungnya, OCR (Optical Character Recognition) dapat mengotomatiskan proses ini, sehingga Anda dapat mengonversi gambar menjadi berkas teks yang dapat diedit dan dicari.

Teknik-teknik yang akan Anda pelajari dapat diterapkan pada banyak aplikasi:

  • Mendigitalisasi dokumen fisik: Mengonversi dokumen hasil pindai, PDF, atau foto teks menjadi berkas yang dapat diedit dan dicari.
  • Otomatisasi entri data: Mengekstrak informasi dari formulir, faktur, tanda terima, dan dokumen lainnya untuk secara otomatis mengisi basis data atau spreadsheet.
  • Meningkatkan aksesibilitas: Membuat versi teks digital dari buku, menu, atau rambu untuk penyandang disabilitas penglihatan. Alat text-to-speech kemudian dapat digunakan untuk membacakan teksnya.
  • Mobil swa-kemudi: Mengenali rambu lalu lintas dan pelat nomor untuk navigasi yang aman.

Tutorial ini akan berfokus pada mesin Tesseract OCR dan API Python-nya — PyTesseract. Sebelum mulai menulis kode, mari meninjau singkat beberapa pustaka populer yang didedikasikan untuk OCR.

Pustaka OCR Sumber Terbuka Teratas di Python

Karena OCR adalah masalah populer yang terus dikembangkan, banyak pustaka sumber terbuka mencoba menyelesaikannya. Di bagian ini, kita akan membahas yang paling populer karena kinerja dan akurasinya yang tinggi.

Tesseract

Tesseract OCR adalah mesin pengenalan karakter optik sumber terbuka yang paling populer di kalangan pengembang. Seperti alat lain dalam daftar ini, Tesseract dapat mengambil gambar berisi teks dan mengonversinya menjadi teks yang dapat diedit.

Kelebihan

  • Pustaka yang matang dan banyak digunakan dengan komunitas besar
  • Mendukung lebih dari 100 bahasa
  • Gratis dan sumber terbuka

Kekurangan

  • Akurasi bisa lebih rendah dibandingkan beberapa solusi berbasis deep learning
  • Opsi konfigurasi terbatas

Easy OCR

EasyOCR adalah pustaka Python yang dirancang untuk OCR (Optical Character Recognition) yang mudah digunakan. Sesuai namanya, pustaka ini menawarkan pendekatan ramah pengguna untuk mengekstrak teks dari gambar.

Kelebihan

  • Mudah digunakan dan mudah diatur
  • Akurasi tinggi dengan model deep learning
  • Mendukung berbagai bahasa secara langsung

Kekurangan

  • Bergantung pada model pra-latih yang ukurannya bisa besar
  • Mungkin lebih lambat dibandingkan Tesseract untuk tugas-tugas sederhana

Keras OCR

Keras-OCR adalah pustaka Python yang dibangun di atas Keras, kerangka kerja deep learning yang populer. Pustaka ini menyediakan model OCR siap pakai dan pipeline pelatihan end-to-end untuk membangun model OCR baru.

Kelebihan

  • Pendekatan berbasis deep learning, menawarkan akurasi tinggi untuk berbagai jenis teks
  • Pemilihan dan pelatihan model yang dapat disesuaikan
  • Dapat lebih akurat pada tata letak kompleks atau teks tulisan tangan

Kekurangan

  • Memerlukan GPU untuk kinerja optimal
  • Kurikulum belajar lebih curam karena sifat deep learning
  • Melatih model kustom dapat memakan waktu

Berikut tabel yang merangkum perbedaan, kelebihan, dan kekurangannya:

Nama Paket

Kelebihan

Kekurangan

Tesseract (pytesseract)

Matang, banyak digunakan, dukungan luas

Lebih lambat, akurasi lebih rendah pada tata letak kompleks

EasyOCR

Mudah digunakan, banyak model

Akurasi lebih rendah, kustomisasi terbatas

Keras-OCR

Akurasi lebih tinggi, dapat disesuaikan

Memerlukan GPU, kurva belajar lebih curam

Dalam tutorial ini, kita akan berfokus pada PyTesseract, yakni API Python untuk Tesseract. Kita akan mempelajari cara mengekstrak teks dari gambar sederhana, cara menggambar bounding box di sekitar teks, dan melakukan studi kasus dengan dokumen hasil pindai.

Panduan Langkah demi Langkah OCR dengan PyTesseract & OpenCV

Instalasi

PyTesseract berjalan di atas mesin Tesseract resmi, yang merupakan perangkat lunak CLI terpisah. Sebelum menginstal pytesseract, Anda harus memasang mesinnya terlebih dahulu. Di bawah ini adalah panduan instalasi untuk berbagai platform.

Untuk Ubuntu atau WSL2 (pilihan saya):

$ sudo apt update && sudo apt upgrade
$ sudo apt install tesseract-ocr
$ sudo apt install libtesseract-dev

Untuk Mac menggunakan Homebrew:

$ brew install tesseract

Untuk Windows, ikuti petunjuk dari halaman GitHub ini.

Selanjutnya, buat lingkungan virtual baru. Saya akan menggunakan Conda:

$ conda create -n ocr python==3.9 -y
$ conda activate ocr

Kemudian, Anda harus menginstal pytesseract untuk melakukan OCR dan opencv untuk manipulasi gambar:

$ pip install pytesseract
$ pip install opencv-python

Jika Anda mengikuti tutorial ini di Jupyter, jalankan perintah ini di sesi terminal yang sama agar lingkungan virtual baru Anda ditambahkan sebagai kernel:

$ pip install ipykernel
$ ipython kernel install --user --name=ocr

Sekarang, kita bisa mulai menulis kode.

Penggunaan dasar

Kita mulai dengan mengimpor pustaka yang diperlukan:

import cv2
import pytesseract

Tugas kita adalah membaca teks dari gambar berikut:

Gambar contoh untuk melakukan OCR dengan PyTesseract dan OpenCV

Pertama, kita menentukan path gambar dan memberikannya ke fungsi cv2.imread:

# Read image
easy_text_path = "images/easy_text.png"
easy_img = cv2.imread(easy_text_path)

Kemudian, kita meneruskan gambar yang dimuat ke fungsi image_to_string dari pytesseract untuk mengekstrak teks:

# Convert to text
text = pytesseract.image_to_string(easy_img)
print(text)
This text is
easy to extract.

Semudah itu! Mari mengubah apa yang baru saja kita lakukan menjadi sebuah fungsi:

def image_to_text(input_path):
   """
   A function to read text from images.
   """
   img = cv2.imread(input_path)
   text = pytesseract.image_to_string(img)

   return text.strip()

Mari gunakan fungsi tersebut pada gambar yang lebih menantang:

Gambar contoh lain untuk melakukan OCR dengan PyTesseract dan OpenCV

Gambar ini lebih menantang karena ada lebih banyak tanda baca dan teks dalam berbagai jenis font.

# Define image path
medium_text_path = "images/medium_text.png"

# Extract text
extracted_text = image_to_text(medium_text_path)
print(extracted_text)
Home > Tutorials » Data Engineering

Snowflake Tutorial For Beginners:
From Architecture to Running
Databases

Learn the fundamentals of cloud data warehouse management using
Snowflake. Snowflake is a cloud-based platform that offers significant
benefits for companies wanting to extract as much insight from their data as
quickly and efficiently as possible.

Jan 2024 - 12 min read

Fungsi kita bekerja hampir sempurna. Ada kekeliruan pada salah satu titik dan tanda “>”, tetapi hasilnya tetap dapat diterima.

Menggambar bounding box di sekitar teks

Operasi umum dalam OCR adalah menggambar bounding box di sekitar teks. Operasi ini didukung di PyTesseract.

Pertama, kita meneruskan gambar yang dimuat ke fungsi image_to_data:

from pytesseract import Output

# Extract recognized data from easy text
data = pytesseract.image_to_data(easy_img, output_type=Output.DICT)

Bagian Output.DICT memastikan detail gambar dikembalikan sebagai kamus. Mari lihat isinya:

data
{'level': [1, 2, 3, 4, 5, 5, 5, 4, 5, 5, 5],
'page_num': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'block_num': [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'par_num': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'line_num': [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2],
'word_num': [0, 0, 0, 0, 1, 2, 3, 0, 1, 2, 3],
'left': [0, 41, 41, 236, 236, 734, 1242, 41, 41, 534, 841],
'top': [0, 68, 68, 68, 68, 80, 68, 284, 309, 284, 284],
'width': [1658, 1550, 1550, 1179, 380, 383, 173, 1550, 381, 184, 750],
'height': [469, 371, 371, 128, 128, 116, 128, 155, 130, 117, 117],
'conf': [-1, -1, -1, -1, 96, 95, 95, -1, 96, 96, 96],
'text': ['', '', '', '', 'This', 'text', 'is', '', 'easy', 'to', 'extract.']}

Kamus tersebut memuat banyak informasi tentang gambar. Pertama, perhatikan kunci conf dan text. Keduanya memiliki panjang 11:

len(data["text"])
11

Ini berarti pytesseract menggambar 11 kotak. conf adalah confidence. Jika bernilai -1, maka kotak terkait digambar mengelilingi blok teks alih-alih kata per kata.

Sebagai contoh, jika Anda melihat empat nilai pertama dari width dan height, nilainya besar dibandingkan yang lain karena kotak-kotak tersebut digambar mengelilingi keseluruhan teks di tengah, lalu untuk setiap baris teks, serta keseluruhan gambar itu sendiri.

Selain itu:

  • left adalah jarak dari sudut kiri atas bounding box ke batas kiri gambar.
  • top adalah jarak dari sudut kiri atas bounding box ke batas atas gambar.
  • width dan height adalah lebar dan tinggi bounding box.

Menggunakan informasi ini, mari kita gambar kotaknya di atas gambar di OpenCV.

Pertama, kita ekstrak lagi datanya dan panjangnya:

from pytesseract import Output

# Extract recognized data
data = pytesseract.image_to_data(easy_img, output_type=Output.DICT)
n_boxes = len(data["text"])

Lalu, kita membuat loop sebanyak jumlah kotak yang ditemukan:

for i in range(n_boxes):
   if data["conf"][i] == -1:
       continue

Di dalam loop, kita membuat kondisi yang melewati iterasi saat ini jika conf sama dengan -1. Melewatkan bounding box yang lebih besar akan menjaga gambar tetap bersih.

Lalu, kita mendefinisikan koordinat kotak saat ini, khususnya lokasi sudut kiri atas dan kanan bawah:

for i in range(n_boxes):
   if data["conf"][i] == -1:
       continue
   # Coordinates
   x, y = data["left"][i], data["top"][i]
   w, h = data["width"][i], data["height"][i]

   # Corners
   top_left = (x, y)
   bottom_right = (x + w, y + h)

Setelah mendefinisikan beberapa parameter kotak, seperti warna dan ketebalan kotak dalam piksel, kita meneruskan semua informasi ke fungsi cv2.rectangle:

for i in range(n_boxes):
   if data["conf"][i] == -1:
       continue
   # Coordinates
   x, y = data["left"][i], data["top"][i]
   w, h = data["width"][i], data["height"][i]

   # Corners
   top_left = (x, y)
   bottom_right = (x + w, y + h)

   # Box params
   green = (0, 255, 0)
   thickness = 3  # pixels

   cv2.rectangle(
       img=easy_img, pt1=top_left, pt2=bottom_right, color=green, thickness=thickness
   )

Fungsi tersebut akan menggambar kotak-kotak di atas gambar asli. Mari simpan gambarnya dan lihat:

# Save the image
output_image_path = "images/text_with_boxes.jpg"
cv2.imwrite(output_image_path, easy_img)
True

Gambar contoh dengan bounding box digambar di sekitar setiap kata. Dilakukan menggunakan PyTesseract dan OpenCV.

Hasilnya persis seperti yang kita inginkan!

Sekarang, mari kita masukkan semua yang telah kita lakukan ke dalam sebuah fungsi lagi:

def draw_bounding_boxes(input_img_path, output_path):
   img = cv2.imread(input_img_path)

   # Extract data
   data = pytesseract.image_to_data(img, output_type=Output.DICT)
   n_boxes = len(data["text"])

   for i in range(n_boxes):
       if data["conf"][i] == -1:
           continue
       # Coordinates
       x, y = data["left"][i], data["top"][i]
       w, h = data["width"][i], data["height"][i]

       # Corners
       top_left = (x, y)
       bottom_right = (x + w, y + h)

       # Box params
       green = (0, 255, 0)
       thickness = 1  # The function-version uses thinner lines

       cv2.rectangle(img, top_left, bottom_right, green, thickness)

   # Save the image with boxes
   cv2.imwrite(output_path, img)

Dan gunakan fungsinya pada teks tingkat menengah:

output_path = "images/medium_text_with_boxes.png"

draw_bounding_boxes(medium_text_path, output_path)

Gambar contoh lain dengan bounding box digambar di sekitar setiap kata. Dilakukan menggunakan PyTesseract dan OpenCV.

Bahkan untuk gambar yang lebih sulit, hasilnya sempurna!

Studi Kasus: OCR pada Berkas PDF dengan Python

Mari lakukan studi kasus pada contoh berkas PDF hasil pindai. Dalam praktiknya, sangat mungkin Anda akan bekerja dengan PDF hasil pindai alih-alih gambar, seperti ini:

Dokumen hasil pindai contoh yang akan dilakukan OCR menggunakan PyTesseract.

Anda dapat mengunduh PDF dari halaman GitHub saya ini.

Langkah berikutnya adalah memasang pustaka pdf2image, yang memerlukan perangkat lunak pemrosesan PDF bernama Poppler. Berikut petunjuk spesifik platform:

Untuk Mac:

$ brew install poppler
$ pip install pdf2image

Untuk Linux dan WSL2:

$ sudo apt-get install -y poppler-utils
$ pip install pdf2image

Untuk Windows, Anda dapat mengikuti petunjuknya dari dokumentasi PDF2Image.

Setelah instalasi, kita impor modul yang relevan:

import pathlib
from pathlib import Path

from pdf2image import convert_from_path

Fungsi convert_from_path mengonversi PDF yang diberikan menjadi serangkaian gambar. Berikut fungsi yang menyimpan setiap halaman berkas PDF sebagai gambar ke direktori tertentu:

def pdf_to_image(pdf_path, output_folder: str = "."):
   """
   A function to convert PDF files to images
   """
   # Create the output folder if it doesn't exist
   if not Path(output_folder).exists():
       Path(output_folder).mkdir()

   pages = convert_from_path(pdf_path, output_folder=output_folder, fmt="png")

   return pages

Mari jalankan pada dokumen kita:

pdf_path = "scanned_document.pdf"

pdf_to_image(pdf_path, output_folder="documents")
[<PIL.PngImagePlugin.PngImageFile image mode=RGB size=1662x2341>]

Keluaran berupa daftar yang berisi satu objek gambar PngImageFile. Mari lihat direktori documents:

$ ls documents
2d8f6922-99c4-4ef4-a475-ef81effe65a3-1.png

Gambarnya ada, jadi mari kita masukkan ke fungsi image_to_text yang kita buat di awal dan cetak beberapa ratus karakter pertama dari teks yang diekstrak:

scanned_img_path = "documents/2d8f6922-99c4-4ef4-a475-ef81effe65a3-1.png"

print(image_to_text(scanned_img_path)[:377])
PEU Business report

New customer's development
and increasing the sale of product

My country economy at this season keeps escaping from Odoba of business though holds a crude oil
high so on unstable element that continues still, and recovering gradually and well.
In the IT industry, there is an influence such as competing intensification in narrowing investment field.

Jika kita membandingkan teksnya dengan berkas, semuanya bekerja dengan baik — pemformatan dan spasi terjaga, dan teksnya akurat. Lalu, bagaimana cara membagikan teks yang diekstrak?

Cara terbaik untuk membagikan teks PDF yang diekstrak adalah sebagai berkas PDF lain! PyTesseract memiliki fungsi image_to_pdf_or_hocr yang mengambil gambar berisi teks dan mengonversinya menjadi berkas PDF mentah yang dapat dicari. Mari kita gunakan pada gambar hasil pindai kita:

raw_pdf = pytesseract.image_to_pdf_or_hocr(scanned_img_path)

with open("searchable_pdf.pdf", "w+b") as f:
   f.write(bytearray(raw_pdf))

Dan berikut tampilan searchable_pdf:

GIF yang menampilkan hasil OCR pada dokumen PDF hasil pindai.

Seperti yang Anda lihat, saya dapat menyorot dan menyalin teks dari berkas tersebut. Selain itu, semua elemen PDF asli tetap terjaga.

Teknik Prapemrosesan Gambar untuk OCR di OpenCV

Tidak ada pendekatan satu-ukuran-untuk-semua untuk OCR. Teknik-teknik yang kita bahas hari ini mungkin tidak bekerja pada jenis gambar lain. Saya sarankan Anda bereksperimen dengan berbagai teknik prapemrosesan gambar dan konfigurasi Tesseract untuk menemukan setelan optimal bagi gambar tertentu.

Faktor terpenting dalam OCR adalah kualitas gambar. Gambar yang dipindai dengan benar, tegak lurus, dan berkontras tinggi (hitam putih) cenderung bekerja paling baik dengan perangkat lunak OCR mana pun. Ingat, hanya karena Anda bisa membaca teksnya bukan berarti komputer Anda bisa.

Jika gambar Anda tidak memenuhi standar kualitas tinggi Tesseract dan keluarannya menjadi tidak jelas, ada beberapa langkah prapemrosesan yang dapat Anda lakukan.

1. Konversi ke grayscale

Pertama, mulailah dengan mengonversi gambar berwarna ke grayscale. Ini dapat meningkatkan akurasi dengan menghilangkan variasi warna yang mungkin membingungkan proses pengenalan. Di OpenCV, tampilannya akan seperti ini:

def grayscale(image):
   """Converts an image to grayscale.

   Args:
       image: The input image in BGR format.

   Returns:
       The grayscale image.
   """
   return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

2. Reduksi noise

Tidak semua gambar, terutama dokumen hasil pindai, memiliki latar belakang yang bersih dan seragam. Selain itu, beberapa gambar mungkin berasal dari dokumen lama di mana halaman memburuk karena usia. Berikut contohnya:

Contoh gambar berisik yang akan dilakukan OCR.

Terapkan teknik seperti filter denoising (misalnya median blur) untuk mengurangi artefak noise pada gambar yang dapat menyebabkan salah interpretasi selama OCR. Di OpenCV, Anda dapat menggunakan fungsi medianBlur:

def denoise(image):
   """Reduces noise in the image using a median blur filter.

   Args:
       image: The input grayscale image.

   Returns:
       The denoised image.
   """
   return cv2.medianBlur(image, 5)  # Adjust kernel size as needed

3. Penajaman

Dalam beberapa kasus, menajamkan gambar dapat mempertegas tepi dan meningkatkan pengenalan karakter, terutama untuk gambar buram atau beresolusi rendah. Penajaman dapat dilakukan dengan menerapkan filter Laplacian di OpenCV:

def sharpen(image):
   """Sharpens the image using a Laplacian filter.

   Args:
       image: The input grayscale image.

   Returns:
       The sharpened image (be cautious with sharpening).
   """
   kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
   return cv2.filter2D(image, -1, kernel)

4. Binerisasi

Untuk gambar tertentu, binerisasi (mengonversi gambar menjadi hitam putih) mungkin bermanfaat. Bereksperimenlah dengan berbagai teknik thresholding untuk menemukan pemisahan optimal antara latar depan (teks) dan latar belakang.

Namun, binerisasi bisa sensitif terhadap variasi pencahayaan dan tidak selalu diperlukan. Berikut contoh tampilan gambar yang telah dibinerisasi:

Contoh gambar: kiri asli, kanan versi binerisasi di OpenCV.

Untuk melakukan binerisasi di OpenCV, Anda dapat menggunakan fungsi adaptiveThreshold:

def binarize(image):
   """Binarizes the image using adaptive thresholding.

   Args:
       image: The input grayscale image.

   Returns:
       The binary image.
   """
   thresh = cv2.adaptiveThreshold(
       image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2
   )

   return thresh

5. Teknik lain

Ada banyak teknik prapemrosesan lainnya, seperti:

  • Dilasi: menebalkan font kecil dan tipis untuk meningkatkan pengenalan
  • Erosi: mengikis teks tebal untuk meningkatkan akurasi. Umum pada dokumen bersejarah dengan font tebal.
  • Deteksi tepi Canny
  • Koreksi kemiringan: memperbaiki kemiringan (skewness) baris teks. Umum pada dokumen yang dipindai tidak lurus

Anda dapat mempelajari lebih lanjut tentang peningkatan kualitas gambar dari halaman dokumentasi Tesseract ini.

Penutup

Dalam artikel ini, Anda telah mengambil langkah pertama untuk mempelajari masalah dinamis bernama OCR. Kita pertama-tama membahas cara mengekstrak teks dari gambar sederhana, lalu beralih ke gambar yang lebih sulit dengan pemformatan kompleks.

Kita juga mempelajari alur kerja end-to-end untuk mengekstrak teks dari PDF hasil pindai dan cara menyimpan teks yang diekstrak sebagai PDF lagi agar dapat dicari. Kita menutup artikel dengan beberapa kiat untuk meningkatkan kualitas gambar dengan OpenCV sebelum memprosesnya di Tesseract.

Jika Anda ingin mempelajari lebih lanjut tentang penyelesaian masalah terkait gambar, berikut beberapa sumber daya computer vision yang dapat Anda cek:


Bexruz (Bex) Tuychiev's photo
Author
Bexruz (Bex) Tuychiev
LinkedIn

Saya adalah kreator konten data science dengan pengalaman lebih dari 2 tahun dan salah satu dengan jumlah pengikut terbesar di Medium. Saya suka menulis artikel mendalam tentang AI dan ML dengan sedikit gaya sarkastik—karena harus ada sesuatu untuk membuatnya tidak terlalu membosankan. Saya telah menghasilkan lebih dari 130 artikel dan satu kursus di DataCamp, dengan satu lagi sedang dalam proses. Konten saya telah dilihat oleh lebih dari 5 juta pasang mata, dan 20 ribu di antaranya menjadi pengikut di Medium dan LinkedIn. 

FAQ OCR Python

Mengapa saya begitu tinggi?

Genetika.

Topik
Python
Machine Learning

Lanjutkan Perjalanan Belajar Python Anda!

{count, plural, one {Kursus} other {Kursus}}

Pemrosesan Citra dengan Python

{hours} jam
57K
Pelajari cara memproses, mengubah, dan memanipulasi gambar sesuai keinginan Anda.
Lihat DetailRight Arrow
Mulai Kursus

{count, plural, one {Program} other {Program}}

Pemrograman Python

{hours} jam
Tingkatkan keterampilan pemrograman Anda. Pelajari cara mengoptimalkan kode, menulis fungsi dan tes, serta menggunakan teknik rekayasa perangkat lunak terbaik.
Lihat SelengkapnyaRight Arrow
Terkait

{count, plural, one {blog} other {blogs}}

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

{count, plural, one {blog} other {blogs}}

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

{count, plural, one {blog} other {blogs}}

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

{count, plural, one {blog} other {blogs}}

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

Lihat SelengkapnyaLihat Selengkapnya