AudionAudion

Address Processor

github.com/Tensionix/address-processor ↗
Builds of this project: versions, files and checksums.
Address Processor

An address is the worst thing to reconcile tables by — and simultaneously the only thing present in most municipal data. The same building in two exports looks like «г. Сургут, ул. Ленина, д. 12» and «Сургут, Ленина 12»; «пр-т Мира, 5к1» and «проспект Мира, дом 5, корпус 1». Matching on exact equality yields ten per cent of hits; matching by eye costs an hour per hundred rows and produces mistakes nobody notices. A row looks for its pair first by exact equality, then by parsed components, then by a normalised fingerprint, and only then approximately. The order is not arbitrary: a strict match never loses to a loose one — otherwise a similar string from the neighbouring district would outrank the correct one. The program aligns tables against a reference address column, assembles clean addresses from spreadsheets, Word and ODT documents, plain text, CSV, markup and PDF with a text layer, maintains a reference directory with slots — postal index, municipality, settlement, street, building, territory code — and sorts it by a chosen hierarchy.

1.7.4
3 downloads from GitHub

Audion Address Processor

Русский · User Guide · OKTMO · Reference · Install

Contents

Working with Russian address data: matching tables by address, assembling clean addresses from disparate sources, a reference directory, territory codes, sorting, and decomposition into parts.

Why It Exists

An address is the worst thing to reconcile tables by — and simultaneously the only thing present in most municipal data.

The same building in two exports looks like this: г. Сургут, ул. Ленина, д. 12 and Сургут, Ленина 12. Or пр-т Мира, 5к1 and проспект Мира, дом 5, корпус 1. Or the address sits in one column in one table and is spread across four in another.

Matching on exact equality yields ten per cent of hits. Matching by eye costs an hour per hundred rows and produces mistakes nobody notices.

How It Is Solved

Five matching stages with refining passes, from strict to loose. A row looks for its pair first by exact equality, then by parsed components, then by a normalised fingerprint, and only then approximately.

The order is not arbitrary: a strict match never loses to a loose one. Once a building is found exactly, fuzzy matching is not considered — otherwise a similar string from the neighbouring district would outrank the correct one. A matched candidate is removed from the pool immediately, so the same building can never be handed out twice.

The full breakdown of the passes is in the Reference.

What It Can Do

Align tables against a reference address column — carrying adjacent columns along with the addresses so the data does not drift apart.

Assemble clean addresses from almost anything: spreadsheets, Word and ODT documents, plain text, CSV, markup, and PDF with a text layer.

Maintain a reference directory with slots: postal index, municipality, settlement, street, building, territory code, and technical keys.

Sort and decompose the directory by a chosen hierarchy of slots — from region down to building, or in any other order.

Move columns between workbooks by building address — not by copying rows, but through Excel, preserving formulas, formatting, sheets, and the row order of the primary workbook.

Lean on the Rosstat OKTMO registry. Region and municipality are chosen from the official registry, settlement names are expanded into their grammatical forms, and the search narrows down to the intended territory. The registry is downloaded by a button in the window — see OKTMO.

Read damaged headers. A two-level header is assembled whole: a row that carries no data values and sits under a horizontally merged parent header counts as a sub-header, whatever words it uses. A column headed "Проектная мощность, мест" over "по корпусам" becomes "Проектная мощность, мест по корпусам" instead of an unnamed column_5, and the sub-header row itself no longer slips into the data.

Principles

Sources are never modified. Results always go into a separate folder. What came in stays as it was.

Columns are given as in Excel. A, B, AC — the same letters visible in the spreadsheet header, not ordinal numbers.

Settings need not be edited by hand. Everything lives in a configuration file, but columns can be set safely from the window.

Every run leaves a report. A JSON file appears in report/ next to the result: what was found, by which pass, and what was left without a pair.

The output spreadsheet is readable. Column widths are fitted to the content, long text wraps, row heights grow. A small thing, but without it every export has to be tidied by hand.

Documentation

DocumentAbout
User GuideThe window, workspace folders, every command step by step
OKTMO and project keysRosstat registry, download, update, cache, keys, pins
Technical ReferenceSlots, matching passes, settings, reports
Install and launchPortable environment, launchers, maintenance
Project file mapWhere everything lives in the sources

Technical Reference

Sources

.xlsx, .docx, .odt, .txt, .csv, .md, and .pdf with a text layer. Legacy .doc and .xls are converted by a separate command.

Settings

config/project.yaml. The window offers safe fields for the columns — editing the file is not required.

Diagnostics

A separate breakdown of how the parser worked, and a safe removal of entirely empty rows — with no risk of catching rows that hold data in a single column.

Versions
1.7.4
Audion_Address_Processor_v1.7.4_Full.zip218 MB4 September 2026sha256here only
Audion_Address_Processor_v1.7.4.zip9.3 MB4 September 2026sha256here only
README_EN.dark.pdf102 KB4 September 2026
README_EN.light-sand.pdf102 KB4 September 2026
README_EN.md5.1 KB4 September 2026
README_RU.dark.pdf110 KB4 September 2026
README_RU.light-sand.pdf110 KB4 September 2026
README_RU.md8.1 KB4 September 2026
USER_GUIDE_EN.dark.pdf170 KB4 September 2026
USER_GUIDE_EN.light-sand.pdf171 KB4 September 2026
USER_GUIDE_EN.md13.8 KB4 September 2026
USER_GUIDE_RU.dark.pdf195 KB4 September 2026
USER_GUIDE_RU.light-sand.pdf195 KB4 September 2026
USER_GUIDE_RU.md23.5 KB4 September 2026
Installation

The program is portable: the unpacked folder is the installed program. Nothing is written to the registry; to uninstall, delete the folder.

$name = "Audion_Address_Processor_v1.7.4_Full.zip"
Invoke-WebRequest "https://audion.dev/get/address-processor/1.7.4/Audion_Address_Processor_v1.7.4_Full.zip" -OutFile $name
Invoke-WebRequest "https://audion.dev/get/address-processor/1.7.4/Audion_Address_Processor_v1.7.4_Full.zip.sha256" -OutFile "$name.sha256"

$want = (Get-Content "$name.sha256").Split(" ")[0]
$have = (Get-FileHash $name -Algorithm SHA256).Hash.ToLower()
if ($want -ne $have) { throw "checksum mismatch: the download is corrupt" }

Expand-Archive $name -DestinationPath ".\address-processor"
All downloads · Home