Sectors: Finance • Information Technoloy • Government • Healthcare • Industries • Education • (show all)
In this article, we'll walk through how you can perform OCR on Thai receipts in Thai ภาษาไทย or English language easily.
Receipts contain useful transaction information and they are required for various activities like accounting, expense claiming and loyalty point rewarding. As most receipts are on paper or in raw digital formats like scanned PDF or image files, organizations need to extract information from scanned receipts before further processing. The traditional manual extraction process was time consuming and expensive.
With the development of machine learning, we can now use scanned receipts OCR to intelligently extract text and structured data (like merchant, line items and amounts) from receipts instantly. This process has also been called receipt digitization or automated receipt processing.
In Thailand ประเทศไทย, receipts are usually in Thai ภาษาไทย or English language. The receipt OCR should be able to handle receipts in any language. For example, the image on right displays a receipt received in Thailand ประเทศไทย:
There are many ways to perform Thai receipt OCR ใบเสร็จ. For example, you may use the free Thai receipt OCR ใบเสร็จ web page to detect information like retailer name, line items, subtotal and total amounts.
Additionally, you may perform receipt OCR from Windows, macOS and Linux command consoles or you can do it in any of your favorite programming languages. Asprise offers receipt OCR API free trial for you to get started - no registration required. Click the tab below to find out how to OCR Thai receipts from the command line or in C# VB.NET, Java, JavaScript/Node.js, PHP or Python.
curl -X POST -F "file=@TH-1.jpg" https://ocr.asprise.com/api/v1/receipt
// View complete code at: https://github.com/Asprise/receipt-ocr/tree/main/csharp-vb-net-receipt-ocr
string response = httpPost("https://ocr.asprise.com/api/v1/receipt", // Receipt OCR API endpoint
new NameValueCollection()
{
{"api_key", "TEST"}, // Use 'TEST' for testing purpose
{"recognizer", "auto"}, // can be 'US', 'CA', 'JP', 'SG' or 'auto'
{"ref_no", "ocr_dot_net_123"} // optional caller provided ref code
},
new NameValueCollection() {{"file", "../../TH-1.jpg"}} // Modify it to use your own file
);
Console.WriteLine(response); // Result in JSON
// View complete code at: https://github.com/Asprise/receipt-ocr/tree/main/java-receipt-ocr
/**
* Uploads an image for receipt OCR and gets the result in JSON.
* Required dependencies: org.apache.httpcomponents:httpclient:4.5.13 and org.apache.httpcomponents:httpmime:4.5.13
*/
public class JavaReceiptOcr {
public static void main(String[] args) throws Exception {
String receiptOcrEndpoint = "https://ocr.asprise.com/api/v1/receipt"; // Receipt OCR API endpoint
File imageFile = new File("TH-1.jpg");
System.out.println("=== Java Thai receipt OCR ใบเสร็จ ===");
try (CloseableHttpClient client = HttpClients.createDefault()) {
HttpPost post = new HttpPost(receiptOcrEndpoint);
post.setEntity(MultipartEntityBuilder.create()
.addTextBody("api_key", "TEST") // Use 'TEST' for testing purpose
.addTextBody("recognizer", "auto") // can be 'US', 'CA', 'JP', 'SG' or 'auto'
.addTextBody("ref_no", "ocr_java_123'") // optional caller provided ref code
.addPart("file", new FileBody(imageFile)) // the image file
.build());
try (CloseableHttpResponse response = client.execute(post)) {
System.out.println(EntityUtils.toString(response.getEntity())); // Receipt OCR result in JSON
}
}
}
}
// View complete code at: https://github.com/Asprise/receipt-ocr/tree/main/javascript-nodejs-receipt-ocr
console.log("=== JavaScript/Node.js Thai receipt OCR ใบเสร็จ ===");
var receiptOcrEndpoint = 'https://ocr.asprise.com/api/v1/receipt';
var imageFile = 'TH-1.jpg'; // Modify it to use your own file
var fs = require('fs');
var request = require('request');
request.post({
url: receiptOcrEndpoint,
formData: {
api_key: 'TEST', // Use 'TEST' for testing purpose
recognizer: 'auto', // can be 'US', 'CA', 'JP', 'SG' or 'auto'
ref_no: 'ocr_nodejs_123', // optional caller provided ref code
file: fs.createReadStream(imageFile) // the image file
},
}, function(error, response, body) {
if(error) {
console.error(error);
}
console.log(body); // Receipt OCR result in JSON
});
<?php // View complete code at: https://github.com/Asprise/receipt-ocr/tree/main/php-receipt-ocr
function receiptOcr($imageFile) {
$receiptOcrEndpoint = 'https://ocr.asprise.com/api/v1/receipt'; //
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $receiptOcrEndpoint);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'api_key' => 'TEST', // Use 'TEST' for testing purpose
'recognizer' => 'auto', // can be 'US', 'CA', 'JP', 'SG' or 'auto'
'ref_no' => 'ocr_php_123', // optional caller provided ref code
'file' => curl_file_create($imageFile) // the image file
));
$result = curl_exec($ch);
if(curl_errno($ch)){
throw new Exception(curl_error($ch));
}
echo $result; // result in JSON
}
print("=== Java Thai receipt OCR ใบเสร็จ ===\n");
receiptOcr('TH-1.jpg'); // Modify it to use your own file
# View complete code at: https://github.com/Asprise/receipt-ocr/tree/main/python-receipt-ocr
import requests
print("=== Python Thai receipt OCR ใบเสร็จ ===")
receiptOcrEndpoint = 'https://ocr.asprise.com/api/v1/receipt' # Receipt OCR API endpoint
imageFile = "TH-1.jpg" # // Modify it to use your own file
r = requests.post(receiptOcrEndpoint, data = { \
'api_key': 'TEST', # Use 'TEST' for testing purpose \
'recognizer': 'auto', # can be 'US', 'CA', 'JP', 'SG' or 'auto' \
'ref_no': 'ocr_python_123', # optional caller provided ref code \
}, \
files = {"file": open(imageFile, "rb")})
print(r.text) # result in JSON
The open source code of the Thai receipt OCR ใบเสร็จ in C#, Java, JavaScript, PHP and Python can be found at github.com/Asprise/receipt-ocr
Note the result JSON contains both structured data like merchant name, address, phone, VAT/GST tax registration number, receipt number, country, currency, subtotal, total amounts and line items as well full text OCR. Once you have the result, you can then process it in your receipt scanner apps or receipt scanner software like budgeting and banking applications.
🧾 Try it out yourself: OCR your receipts for free
Besides Thai receipts, many other countries' receipts are supported: Singapore Receipt OCR, Malaysia Resit OCR, India Receipt OCR, United States Receipt OCR, Mexicano Recibo OCR, Colombia Recibo OCR, EU European Union Receipt OCR, German Receipt OCR (Kassenbon Texterkennung), UK Receipt OCR, French Receipt OCR (OCR Pour Reçus/tickets De Caisse), Italian Receipt OCR, Swiss Receipt OCR, Español Recibo OCR, Nederland Kassabon OCR, Kípros απόδειξη OCR, Australian Receipt OCR.
There are many articles online comparing Google Vision, Azure Vision and AWS Rekoginition on general OCR capabilities. Which is the best receipt OCR API? Do check out the detailed receipt OCR API comparisons.