logoalt Hacker News

Why are all the amounts values negative?

36 pointsby 4pkjailast Sunday at 5:53 AM16 commentsview on HN

Comments

rmunntoday at 12:55 AM

I was expecting something about double-entry accounting and how it can (initially) be non-intuitive whether to mark a given entry as a debit (-100) or credit (+100), especially for liabilities (when you enter a credit card payment in your ledger, the signs aren't what you might intuitively expect when you haven't wrapped your head around the system yet).

Instead I get a nice blog post about a knotty little problem caused by someone's abuse of semantic markup for style purposes. Shows that HTML doesn't have a monopoly on that issue. PDFs are already bad enough as a format for extracting data from, we don't need dumb HTML-inspired tricks on top of that.

Nice job finding the issue and explaining it clearly, OP. Thanks for an interesting writeup.

show 1 reply
deepsuntoday at 12:04 AM

Why not skipping all the minus signs unless they do not immediately precede a number. I see all the minus signs are after the number, not before, so just skip if they are not before. Preferably in the same BT/ET block as the number.

show 2 replies
happymellonlast Monday at 4:47 PM

Does this end on a cliffhanger?

Did they try one method, and what was the feedback?

show 1 reply
TZubiriyesterday at 10:59 PM

OCR the PDF.

It's the ground truth, and it's not like it's more complex than parsing a pdf, at this point, the technology for OCR might even be better than PDF parsing, which is full of accidental instead of natural complexity.

show 1 reply
engkimolast Sunday at 9:04 PM

This is a great example of why a PDF’s text layer is not necessarily the same as its visible content.

I’d be cautious about making “non-black means invisible” the general rule. A possible middle ground between raw text extraction and full OCR would be to render the page, map each extracted glyph’s bounding box back to the rendered pixels, and discard glyphs that have almost no contrast with their local background.

That would preserve the exact embedded text for visible characters while using rasterization only to determine visibility.

Has anyone tried this kind of hybrid approach?

show 1 reply