- 2.4%
- cells placed on a 656-cell photographed schedule, built-in
- 87.8%
- the same page with Table AI
- ~715 MB
- one-time download, deletable
Measured over the app's 12-fixture evaluation on an iPad mini (A17 Pro). On clean renders the two paths are identical.
What it does
Vision reads the page and finds the rectangles that look like tables. Each one is cropped from the source image and re-read by PaddleOCR-VL running on MLX; its grid replaces the built-in reconstruction of that region. Everything else on the page is untouched, and a page with no table never touches the model.
Cells are placed by the page, not by the count
The model sometimes returns a row one cell short, skipping an empty cell it could not see. Padding that row on the right would shift every later value one column left and publish a table that looks plausible and is wrong, the worst failure a tool like this can produce. So short rows are placed against column positions found in the page's own text: each cell goes in the column it was photographed in, and a row that cannot be placed with confidence keeps its original padding rather than guessing.
It is slow, and we do not hide that
A large photographed spreadsheet can take well over two minutes on device, against a fraction of a second for the built-in converter. Conversion shows determinate progress and can be cancelled from Home and from Result. Cancelling leaves the built-in conversion in place.
Entirely optional
The model is offered once, states its size before anything is fetched, and can be declined. Settings is where you change your mind later, in either direction. Deleting it frees the full ~715 MB and returns the app to the built-in converter. Declining costs table fidelity and nothing else.
Requirements
-
The download is fetched once from Hugging Face (
mlx-community/PaddleOCR-VL-4bit). Nothing about your captures is sent with the request. - Devices with too little memory report the model unavailable and use the built-in converter, the app never fails a conversion because of it.