Part of a larger ongoing exploratory project, see my recent: “Reading Löw’s ‘Flora der Juden’ with AI: A Test“ (Nov 06, 2026).
In 1663 Samuel Bochart (1599–1667), a Protestant pastor in Caen, published the Hierozoicon. The book is a study of every animal named in the Bible. It is in Latin, but on almost every page Bochart quotes Hebrew, Aramaic, Greek, Arabic and Syriac, and now and then Ethiopic and Samaritan. For each animal he collects what the Bible says, what the ancient translations made of the word, what the rabbis and the Greek and Latin naturalists wrote, and what the Arabic lexicographers and zoologists said about the animals of their own deserts. Then he argues for an identification.
For a long time this was the standard work: Later writers on the animals of the Bible and the Talmud depend on it, either directly or through others: Lewysohn’s Zoologie des Talmuds (1858) cites it constantly. Bochart is still quoted in commentaries and dictionaries today. But very few readers can use the original; there is no modern translation. The Latin is (relatively) easy, but the quotations in six or seven scripts make it particularly challenging, and the references are in seventeenth-century form.
I wanted to see whether current AI tools can make this book readable: a correct transcription of the printed text, and an English translation next to it, at a cost that makes the whole work possible.1
The code, the transcriptions and the translations are free to use (MIT license): https://ezrabrand.github.io/bochart-hierozoicon/ .
The site has 12 chapters, in Latin and English side by side, with a link to the scan at every page. They are 115 pages of volume 2 of Rosenmüller’s edition (Leipzig 1793–96).
What is online now
What is online now: The end of Book 3 on the quadrupeds, and all of Book 4, on the “oviparous quadrupeds”, which for Bochart are the lizards of Leviticus 11:29–30 and their relatives. Some examples of what is in them:
The shafan (ch. 33). Bochart argues that the shafan is not the rabbit, as most translations had it, but “a kind of larger mouse”, the jerboa. His editor Rosenmüller, writing 130 years later, disagrees in his footnotes: he holds that it is the hyrax, the Arabic wabr.2 The two positions now stand on the same page, in English.
The choled (ch. 35) is not the weasel but the mole.
The kippod (ch. 36) is the hedgehog and the porcupine. Bochart lists the three opinions of his time: that it lives on land, in water, or in the air. The third opinion came from Isaiah and Zephaniah, where the kippod lives in ruins, so some took it for the owl or another bird.
The tsab (Book 4, ch. 1) is the “land crocodile”, the Arabic ḍabb, a large desert lizard. This chapter is 25 pages long and is mostly Arabic: Bochart quotes al-Damīrī and others at length, much of it, as his heading says, “not yet published” in Europe.
The semamith of Proverbs 30:28 (in a modern translation: “the lizard you can catch in your hand, yet it is found in royal palaces”). Ibn Ezra and others took it for the ape, “a delight of kings, and furnished with hands like a man”. Kimḥi and others took it for the spider. Bochart argues that it is a lizard, the stellio.
How it works
The scans are from the Bavarian State Library in Munich. The text is read by an AI model (Claude Opus), page by page, at full resolution. A second, cheaper model (Gemini Flash) and the library’s own OCR read every page too. Wherever they disagree with the main reading, a crop of the printed line is shown to the model again, with the question: what is printed here? A word is changed only when this second look agrees with one of the other readers. The doubtful cases are listed, and I (with the help of AI agents) look at them on the scan.
Then the pages are joined into chapters and translated, by the same model, under fixed rules: Bible references in modern form, every Hebrew, Arabic and Greek word kept in its script with a transliteration, Bochart’s sources identified where this is possible.
What I learned
It is surprisingly relatively cheap, for something so significant. The first chapter cost $6.31, with tests. The latest 74 pages cost $9.71, about 13 cents a page, and took about an hour and a half. The whole Hierozoicon is about 2,780 pages in Rosenmüller’s three volumes. At this rate the transcription and translation of the entire work would cost around $360 and perhaps 35 sessions of work like this one.
These models read the print very well. On three pages that I corrected by hand, the final text has about one wrong character in a thousand. But the errors that remain are of a special kind: the model “corrects” the print toward what it expects. It writes causa where the book has the old spelling caussa. When the printer set a wrong Hebrew letter, the model writes the right word. In a scholarly edition that is a real error: the reader must see what is printed, also a misprint. In this tranche the scan check found that the voting step had “corrected” a printer’s hae to hac, and had changed Greek ligatures into the wrong letters. Much of the pipeline exists to catch this kind of error, and the most useful voter is the oldest and worst one, the library’s OCR, because it has no idea what the word should be.
The checks have to be checked. Each step has its own way to fail. On three pages the program that cuts the page into images cut off the ends of many lines (33 lines on one page). The second model got the same cut images, so it “agreed”. Only the library OCR, which works on the full page, showed the problem. In other places the catchword at the foot of a page (the first word of the next page, printed as a guide for the binder) was read as part of the text, so a word appeared twice. None of this is hard to fix once you see it.
Next
The next part is Part 2 of the work, which begins with the birds (the dove comes first). If I continue, I would continue in tranches of three to five chapters, and to add the rest of the work as it goes.
Screenshots
https://www.digitale-sammlungen.de/en/view/bsb11935761?page=570 , col. 1004 (p. 570 in the scan):
https://ezrabrand.github.io/bochart-hierozoicon/shafan.html , col. 1004 (note the side-by-side original Latin, and English translation; the English translation includes transliteration of Greek, Arabic, Syriac, Ethiopic (Ge’ez), and Samaritan; and also explains book abbreviations):
Names index, https://ezrabrand.github.io/bochart-hierozoicon/names.html :
Appendix - Technical
Source: Rosenmüller’s edition, vol. 2, Munich BSB (MDZ) bsb10353454, IIIF Presentation 2.0. Printed page = canvas − 16. Scans about 2,100 × 2,830 px; rights statement NoC-NC 1.0, so the scans are only linked. The MDZ hOCR layer is fetched per canvas and is used as an independent reader. It reads plain Latin, Greek and Arabic quite well, drops Syriac, and has no italics. The margin column numbers of the 1663 edition are kept as [col. 1043] marks.
OCR: Claude Opus 5.5 at low reasoning effort, through OpenRouter. Each page is cropped to the text block (now widened to cover every MDZ text line) and sent as two halves at full resolution, because the Arabic dots and vowel signs are lost when the image is scaled down. The output is JSON: blocks typed as heading, body, footnote or furniture (running heads, signatures, catchwords), with <i> for italics, ^{a)} for note marks and ⟦p. 1044⟧ for margin numbers. I tested Sonnet 5.5, Gemini 3.8 Flash and Gemini 4 Argon as the main reader. Argon is as good on the gold pages at a tenth of the price, but over a whole chapter, after the full second reading and vote, 77 words were still wrong (accents, iota subscripts, Hebrew abbreviations), twice as many as Opus has before the vote; it also drops margin marks.
Second reading and vote: Gemini 3.8 Flash and the MDZ OCR are aligned word by word with the Opus text (check.py). Each line with a difference is cropped from the scan and shown to Opus again as an image judge, with only the question of what is printed (judge.py). A word changes only when the judge agrees with Flash or MDZ (vote.py). A change that only MDZ supports is listed, not applied, unless it was read on the scan. So are letters that this type does not distinguish reliably (ד/ר, ذ/ن, medial ف/غ). There is no text-only judge, because a judge that decides from the sense makes the same “corrections” as the OCR.
Scan check: For tranche 1 (283 items) a script makes a 2× crop of each doubtful line and each applied change. Four Opus subagents, one per page range, read them under fixed rules (”keep the print, also a misprint”; long s as s; ligatures as letters). Where an agent and the judge read differently, I read the crop myself. Result: 30 proposals accepted, 14 changes undone, 18 corrections from the print; about 50 readings remain open.
Quality: Three gold pages (pp. 410, 422, 428) corrected by hand. Character error rate after the vote: 0.1% overall, Latin 0.0%, Greek 0.3%, Hebrew 0.0%, Arabic 0.7%. The vote also found three errors in my own gold pages, all printer’s errors that I had corrected myself.
Translation: Opus 5.5 at low effort, by chapter, in chunks of about 5,000 characters, under written rules (TRANSLATION_RULES.md). Code then converts Bible references to SBL form, adds Hebrew letters to Syriac, expands Bochart’s abbreviations and adds identifications of the authors he cites from reviewed tables. A script checks that every page mark, column mark and foreign-script word is kept, and that every Arabic word has a transliteration.
Cost:3 All model calls go through the OpenRouter Batch API at half price; results come in 5–15 minutes. The batch accepts images only as public URLs, so the crops of a run are pushed to a public GitHub repository and deleted after the run. Tranche 1 (74 pages, 10 chapters): OCR $2.91, image judge $4.67 (about 1,320 lines), translation about $1.90, re-OCR of three pages $0.23; total $9.71, $0.131 a page. The judge is now the largest cost. The pilot cost $0.28 a page.
Thanks to Natan Slifkin for the idea to work on this specific book.
Modern scholarship sides with Rosenmüller.
Note: cost doesn’t include the cost of the “orchestrator”, which was Opus 5.5 (medium effort). I have a subscription to it; in API prices, it would have been ~$10 in spend. The latest tranche (~75 pp. processed) took ~1.5 hours, end-to-end.




