이 페이지의 코드가 시작되지 않았습니다.

index.html을 폴더에서 바로 열면 브라우저가 JavaScript 모듈을 막습니다. 그래서 a PDF 골라도 아무 일도 일어나지 않아요. 폴더를 http로 띄워서 여세요:

powershell -ExecutionPolicy Bypass -File serve.ps1

그런 다음 http://localhost:8080/을 여세요.

PDF to CSV — every table in it, bank statements included

Finds every table in a PDF and turns it into rows a spreadsheet can open.

언어: 한국어
소스 보기
documents 절대 업로드되지 않습니다. 서버가 아예 없으니까요.

The PDF you choose is opened and read in memory on this machine, by code served from this address, and the CSV is written the same way. Nothing here can make an upload, and there is no server on the other end of this page to receive one. Whatever the tables hold - an account number, a balance, a list of payees, a client's prices - stays in the tab.

실시간 확인: 확인 중…

오프라인: 확인 중…

Don't take our word for it: open DevTools, watch the Network tab, and convert a PDF. Not one request carries a page, a row, a number or a filename. Or unplug from the internet and convert it anyway.

1 Choose a PDF

2 Check what it read

A PDF looks as though it holds tables and does not: it holds text placed at positions on a page, and the columns are strips of paper nobody printed in. So every table below was worked out rather than read. Where one of them carries a running balance, the line above the tables is the tool checking its own work — every row proved against the row before it.

3 Take the CSV

Markdown으로 보기

How to turn the tables in a PDF into a CSV

  1. Choose the PDF. One at a time. It is read straight off your disk by the browser — every page of it, before anything is decided, because whether a document writes 1.240,00 or 1,240.00 and which way round its dates go are facts about the document rather than about any one page.
  2. Look at the tables it found. Every table on every page, each with its own columns and its own headings where the page printed any. A table that runs across two sections or two pages under the same headings is one table, and the headings are not repeated in the middle of it. A cell that wrapped onto a second line is folded back into its row. Totals, subtotals and labels come through as the rows they are on the page.
  3. Pick one, or take them all. When there is more than one table, the control above them chooses which goes into the CSV — all of them, one after another, or just the one you came for. If a table carries a running balance, the line above the tables says whether every row added up. Dates that carry their year come out as YYYY-MM-DD and amounts as plain signed numbers; a date with no year is left exactly as it was printed, because the year it belongs to would be a guess.
  4. Take the CSV. It is written to RFC 4180 — proper quoting, CRLF line endings — as UTF-8 with a byte order mark, so Excel opens it with the currency symbols intact instead of turning them into letters. With all the tables in one file, each keeps its own heading row and an empty line comes between them. Nothing was uploaded to produce it.

자세한 설명

Is it safe to upload a bank statement? A statement is every payee, every amount and your balance in one file. Here is what a converter receives, what the careful ones do with it, and how to tell whether the upload needed to happen at all.

자주 묻는 질문

How does it find tables when the PDF has no table in it?

From where the text sits. A page is first split wherever a column of small print runs beside the main content — told apart from a column of the table by the fact that the table's cells share a baseline exactly, and the small print only ever sits beside them by accident. Then each part is walked from top to bottom and cut at headings and gaps into blocks, and the columns of each block are the places where several lines agree a cell starts or ends. Blocks with the same columns are joined back into one table. There is no per-bank or per-form template, so there is no layout it has not been taught.

Does it only work on bank statements?

No. It started as a statement converter and was rebuilt to find every table in a document, because the first real statement put through it had two transactions and five other tables, and a tool that only wanted the transactions found nothing at all. Invoices, price lists, timetables, results and reports are tables the same way. What a statement adds is a running balance, and where one is there the tool checks every row against it.

What happens to a description too long for its column?

It is folded back into its row, which is the failure that makes most PDF-to-CSV output unusable. A line with a single cell of words in it, set close to a row, is that row's cell continued — folded into the row below it rather than the one above when it sits nearer to that one, which is how a long label above its value is printed. A line with more than one cell, or with a number in it, is a row of its own.

How can it possibly know whether it read my statement correctly?

Because most statements carry a running balance, and a running balance is a proof rather than a decoration. If the balance printed on every row really is the balance on the row above plus that row's amount, then the amounts were read correctly, the rows were separated correctly and none was dropped or counted twice — any of those mistakes breaks the chain at the row where it happened. The tool does that subtraction on every row and tells you the result. It also finds the balance column that way rather than by reading a heading, so a table that passes has necessarily had its columns identified correctly. A table without a balance cannot be checked this way, and the page does not pretend it was.

My dates came out wrong. 03/04 is the fourth of March, not the third of April.

Change the control above the tables and everything is redone instantly. A numeric date is genuinely ambiguous, and the tool settles it from the document rather than from your location: if any date anywhere in it has a day past the twelfth, that one row settles the order for all of them, and the page says so. When every date falls on or before the twelfth there is nothing in the file that could tell them apart, so it says that, and picks day-first until you say otherwise. A date printed without a year, as card statements print them, is left exactly as it was written.

Does it work on a scanned PDF?

No, and it says so rather than handing you an empty file. A scan is a photograph: the rows are pixels and there is no text to line up. The page then shows you what to do instead, and for a statement the first suggestion is the one most people overlook — nearly every online bank will give you the same statement as CSV, OFX or QIF directly, which needs no conversion and is more accurate than reading any picture could be.

Can it open a password-protected PDF?

No, and that is deliberate. Banks lock a lot of statements, usually with a date of birth or the last digits of an account number. Taking that protection off is a different job from reading a table, so this tool refuses and points you at the ways to do it without the file leaving your machine. The best of them is the PDF unlocker on this site: it takes the password off in your own browser and changes nothing on the pages, so the text arrives here exactly where it was printed. Printing the document back to PDF from Chrome or Edge, or exporting it from Preview on a Mac, also works. Do not use any other website that offers to unlock it — that is an upload of the exact document this page exists to keep off the internet.

Is my PDF uploaded anywhere?

No. The file is read and the CSV is written by your own browser on your own hardware. There is no server side to this tool, and the page's Content-Security-Policy names every address it may contact — none of them belongs to this site. The simplest proof is to unplug from the internet and convert a PDF anyway.

Why is there a strange character at the start of the CSV?

That is a byte order mark, and it is there on purpose. Excel on Windows reads a CSV without one using the system's legacy code page, so a table in pounds or euros arrives with the currency symbol replaced by a letter. The mark tells it the file is UTF-8. Every reader that matters skips it silently; a parser strict enough to show it will hand back a first column heading with an invisible character on the front, which is the cost of the trade.

Is there a size limit, and does it cost anything?

There is no limit written into the tool. The limit is your own machine: the document is held in memory while it is read, which a laptop will do with several hundred pages without complaint. It is free, there is no account, no sign-in and no trial. The site carries advertising, which is what pays for it; the ads are not given anything about your documents.

Does it work offline?

Yes. Load the page once, then disconnect from the internet and it keeps working. That is also the simplest way to prove nothing is being uploaded: a tool that sent your document away to be converted would stop the moment you unplugged.