
Windows office automation program
Building register owner extractor
Pick a folder of register photos, and it puts every owner's name and address into one Excel sheet.
Project notes
Real screens


Introduction
A Windows program that reads the owner's name and address from a folder of building register photos and puts them into one Excel sheet. It was made for a real client and delivered.
Purpose
Read owners' names and addresses from a whole folder of register photos into Excel. As the client's requests went on, picking out the registers flagged for violations was added.
The problem
The photos were uneven: the owner fields sit in different places on each register, a “열람용” (viewing copy) watermark covers some text, and the same page often comes in two copies.
Main features
- Choose one folder and it reads every subfolder in one go.
- Co-owners get one row each, in order.
- Photos it can't read, and rows that need a look, are flagged for a person.
- It can pick out the registers stamped “위반건축물” (violation) in a yellow box beside the title, gather them, and read the owners of those only.
- A faster mode only picks out the flagged registers, without reading owners.
- Original photos are only read, and everything runs on that PC. Nothing is sent over the internet.
Technology
- Python
- The whole program
- OpenCV
- Finds the table lines to split fields, and finds the yellow box
- Tesseract OCR (Korean)
- Reads the text in each field
- openpyxl
- Writes the Excel file
- tkinter
- The program window
How it was made
- v6 and v6.1 (2026-10-12): handled watermarked copies, skipping page 2 and duplicate copies of a page; added the building name and unit fields and address fixes.
- v6.2 (2026-10-14): added picking out violation-flagged registers, at the client's request.
- v6.3 (2026-10-14 to 15): fixed reading errors by checking the client's sample registers against the originals, field by field.
- v6.3.1 (2026-10-16): added reading owners of the flagged registers only, and delivered it to the client.
Problems and fixes
- Fixed
Problem: The owner fields sit in a different place on each register.
How it was fixed It finds the table lines to split the fields, then finds the labels 성명 (name) and 주소 (address) and reads the fields under them.
- Fixed
Problem: Address lines are packed so tightly that they were read mixed up or in the wrong order.
How it was fixed The address field is cut into single lines and read line by line.
- Fixed
Problem: The site address is partly covered by the “열람용” watermark, so it was misread on many registers.
How it was fixed Only the value field is cut out, and the watermark removed, before it is read.
- Fixed
Problem: Each page came in two copies, so the program had to decide which one to trust.
How it was fixed For each field it takes the copy with fewer signs of misreading, and if the two differ only by a dash, it takes the one with the dash.
- Fixed
Problem: The OCR engine (Tesseract) cannot open files when the path contains Korean characters.
How it was fixed The program copies the engine once to a folder with no Korean characters in its path and runs it from there.
- Fixed
Problem: The page-2 header “(2쪽 중 제2쪽)” came out garbled.
How it was fixed It looks only at the “제N쪽” (page N) part, and treats a page as page 2 only when the register title is missing.
- Still open
Problem: Some address rows still lose a single dash (71-4 read as 714, for example).
How it was fixed Such rows are flagged for checking, and the client was asked to compare long numbers with the original. A fix (v6.3.2) is planned.
Result
Made for a real client's request and delivered; the latest version sent was v6.3.1 (2026-10-16). Reading only the flagged registers with their owners takes about 17 minutes, against about 59 for all of them.
See it working
- Demo video
Demo video 0:49, no sound
The screens in these demos are in Korean.
My part and AI tools
What I did myself
- Took the job, talked with the client directly, and set the scope and the price.
- Obtained the client's real sample files so the program could be tested on them.
- Built the executable on their own PC, ran it on the sample to check the results, then delivered it (v6.3.1).
- Recorded the demo video.
Where AI tools were used
- The code and the check against the originals were done with an AI coding tool; the client conversation, building and test-running it on a real PC, and delivery were done by me.

