I have been experimenting with using the OpenAI Vision API to recognise meter readings in photographs and submit them to C3NTINEL’s meter readings API.
The Vision API lets you generate and process images - the latter is what I’m interested in here.
C3NTINEL is an energy analytics platform that manages meter readings of all sorts and provides analytics and predictions. Specifically here I am interested in what are called “manual readings”. These are meters that are…read manually. They still exist! They often involve someone going round a building and writing them down. C3NTINEL has an API to submit such readings.
So my process here in this demo is:
- upload a photo of a meter to an S3 bucket
- this triggers a lambda to:
- call OpenAI to extract the reading from the image
- submit it to C3NTINEL
The lambda code is quite straightforward - it is here for reference.
Here is an actual example of the process.
I uploaded this image to the bucket:
This is a reading from our household Solar PV.
Uploading it to the bucket triggers the lambda within a few seconds, and we can see the processing here in the logs:
2025-06-17T10:52:52.405Z
INIT_START Runtime Version: python:3.12.v70 Runtime Version ARN: arn:aws:lambda:eu-west-1::runtime:XXXXXXX
2025-06-17T10:52:53.767Z
START RequestId: XXXXXXXXX Version: $LATEST
2025-06-17T10:52:53.767Z
Processing image from: s3://c3ntinel-ai-meter-photos/solar-reading-example.jpg
2025-06-17T10:53:01.544Z
Extracted meter reading: 29954.2
2025-06-17T10:53:03.745Z
END RequestId: XXXXXXXXX
2025-06-17T10:53:03.745Z
REPORT RequestId: XXXXXXXXX Duration: 9977.34 ms Billed Duration: 9978 ms Memory Size: 256 MB Max Memory Used: 145 MB Init Duration: 1357.85 ms
The extracted meter reading is correct.
And here is the result in C3NTINEL:
This is a pretty simple example and would need a bit of work to be useful in production. For example, how are photos matched to meters in a multi-meter organisation? How do you get photos into the bucket in a secure manner? How does it deal with more than one number in the photo? Is a manual approval process necessary? And so on.
You would also have to factor in the cost. ChatGPT estimates that the cost is $0.0031 per image, based on the prompt in the request:
What is the numeric meter reading shown in this image? Respond with only the number.