> When given a note, auto-tag and sort.
I'm not sure what you mean by "auto-tag and sort", but Zim does allow you to organize pages and also search through them.
> A note can be 1) a saved web-page, 2) an image of my physical notebook [should be OCR'd], 3) text I type into the software itself, or 4) a mixture of the above.
Zim has support for attachments and embedded images[2]. It doesn't support OCR, but it would not be difficult to build a little custom tool[3] to use a separate OCR utility, so you can select an image and have it insert the OCRed text underneath. When I link to webpages, I generally just copy-paste the relevant bits into the page, but you could also save the entire webpage as an attachment. Again, a custom tool could be used to automatically save a copy of the URL on the page and/or embed its content.
> Notes should be indexed and searchable by content and title.
Zim has a search feature which works pretty well, though I sometimes have to stick extra synonyms into the text if I find that I keep searching on the wrong keyword.
> Notes should be synced across devices
> Notes should be accessible off-line
Zim stores everything in plain text files with a vaguely mediawikish markup, so I've stored the notebook in a Git repository hosted on BitBucket[4] and periodically push/pull changes between computers. This also leaves me with a history, so I can go back and `git blame`/`git log` a page to see how a project evolved.
I've also written another post on HN discussing my organizational system in more detail here: https://news.ycombinator.com/item?id=13134401
[1]: http://zim-wiki.org/
[2]: http://zim-wiki.org/manual/Help/Attachments.html