Меню

Visual novel reader инструкция



OCR-приложения со встроенными функциями перевода, и что это вообще такое

Знакома ли вам ситуация, когда интересная вам игра не имеет перевода на комфортный для прохождения язык? Скорее всего, нет. Ведь вы достаточно умны и способны, чтобы успевать везде и знать всё, но у всех нас точно есть друг с подобной проблемой. У вас ведь есть друг?

К сожалению, далеко не каждый обладает достаточными знаниями языка для комфортной игры, не отвлекаясь постоянно на переводчик. А это означает, что рано или поздно в поисках лёгкого решения пользователь отправится на просторы интернета, чтобы найти программу, которая способна считать текст с экрана и самостоятельно выполнить перевод, но в конечном итоге найдёт лишь что-то платное или неудобное для игрового процесса, — не дело. «Да легче взять телефон и переводить через «Переводчик» от гугла» — не то что бы сильно ошибаясь утвердит юзер и забьёт в надежде, что когда-то настанет момент релиза перевода интересующей его игры. Но, очевидно, не всё сбывается как мы хотим, не все игры в конечном итоге переводятся.

Я не мог пройти мимо такой несправедливости в интернете, потому в этой статье поделюсь моим опытом использования некоторых программ, способных считать и перевести текст с экрана, но выводы делать только вам, конечно.

Оптическое распознавание символов (англ. optical character recognition, OCR) — механический или электронный перевод изображений рукописного, машинописного или печатного текста в текстовые данные, использующиеся для представления символов в компьютере.

Понимайте эту технологию как более умный сканер. Например, если обычный сканер просто считывает изображение с листа, то OCR считает не изображение, а сразу текст на нём.

Если изначально OCR был нужен для удобного переноса книг и документов в электронный вид, то сейчас находят дополнительные возможности использования этой функции. Непонятная фраза на английском в игре? Теперь не надо переписывать всё предложение в переводчик, а лишь включаешь OCR, вставляешь отсканированное и готово. Удобно, да?

Уж не знаю как думали авторы нижеприведённых программ на самом деле, но, думаю, примерно так: «Удобная штука, конечно, эти ваши программы с OCR, но если таких фраз слишком много, то процесс быстро утомляет… Намного удобней было бы совместить сканирование и перевод, чтобы не бегать от игры к переводчику и обратно».

Наверное, самая первая и известная из программ, появившихся на данном поприще. Справедливо стоит на первом месте. Первом по количеству времени обработки текста, но со временем совершенствуется.

Источник

Tutorial: Visual Novel Reader

Author

user uploaded image

I’m back yet again with another tutorial! If you read and understood my previous post about japanese otome games, then surely, you must be ready to learn and use the wonderful translating machine: VNR! (If not, here’s the tutorial on how to install japanese otome games!)

Please note and remember that my tutorial is one amongst many, I just try to simplify the task by showing some screenshots, I hope you understand!

Downloading The program! It’s the easiest step and it should be quite simple. You can download VNR from here on the download section. Once you pick a link, there should be two folders, one containing an older version and the other, the newest one. I downloaded the old version because updated one didn’t hook properly. Sometimes, its vice versea so you can experiment a little!

(REMEMBER: VNR is a big file! It has a full dictionnary and a translation machine! Please be patient if the download takes a while)

Now this is very important! The VNR file you downloaded is in a ZIP format! Do NOT extract it with WINRAR! Use 7zip instead! If you extract with winrar, not only will it take decades, but you’ll also get errors, so use 7zip, my dear maidens!

When you successfully extract the zip file, you should get this:

user uploaded image

As you can see, there’s an ‘update’ button for your program. When you visit the site, make sure to keep in touch with their newest updates, only press the button if you think newer versions have more content! Because sometimes, new versions cant hook text, so careful.

To launch the program, click on ‘Visual Novel Reader’ with the book icon.

user uploaded image

This is the spring board! Well. My springboard. Normally there aren’t any icons, but since I use this program a lot, VNR attached some shortcuts for my previously launched games. It’s fine though! I’ll tell you how to detect a game and translate it. But before that, click on the button at the far right, we have settings to do.

user uploaded image

Its the ‘preferences’ button, here you can pick your UI language and translating machines! (Including lots of other stuff..) what we want to do now, is to head on the sub-category ‘launch’ like you see on the screenshot. There’s a small box called ‘automatically detect running game’, this box should be empty. If its not, disable it.

Hooking a game with VNR.

user uploaded image

For this tutorial, I’ll use the game I mentionned on my previous post: Chou No Doku Hana No kusari. First and furmost, you wanna launch the game and start it, go past intro scenes and get to the part where there’s text. Once thats done, check your springboard and click on the blue button, the second one from left to right.

user uploaded image

You get this window, which will help you add a game to your springboard and translate it! You’ll press next.

user uploaded image

Then ‘select window of running game’, its the easiest option!

There should be a ‘start’ and ‘stop’ button. Press on start.

user uploaded image

Then simply click on the game window.

user uploaded image

There you go! Now press next.

user uploaded image

Continue to press next and then ‘commit’, your game should be working with VNR now!

user uploaded image

Now that the game works with VNR, we’ll attempt to translate your game! Try to flicker your mouse on the left side of the game’s window. There should be this small menu appearing, its your helpful buddy! Press on ‘Menu’ now.

user uploaded image

Now click on ‘Text Settings’. You should get this window:

user uploaded image

This is the important and tricky part. The small white boxes show the detected text of the game. You have to compare the game’s text with the text that shows on the box. Now, the box is blank! The best way to make text appear is to progress on the game, simply click on the game’s window.

user uploaded image

And see?! A translation box appears and VNR detected your text! If you see the blue letters(detected and translated text) match the game’s text, then you can close the window and keep on enjoying the story!

Now there’s another thing: sometimes VNR only shows text from users who translated the game. So if you don’t find machine translations, make your side menu appear and head to options.

user uploaded image

Enable ‘machine translation’ and there you have it!

user uploaded image

You have translations! Yay!

Not every game has a proper hook code, so VNR could sometimes translate stuff that make no sense. I’ll use KoiGig DevilxAngel as an example..

user uploaded image

See this box filled with gibberish? It means something is wrong. go to the side menu then ‘text settings’ to investigate.

Читайте также:  Синтезатор yamaha 423 инструкция

user uploaded image

Notice how absolutely DIFFERENT the white box’s text is compared to the game’s? It means the hook code isn’t the exact one for the game, the letters are either doubled or trippled. Thankfully, there is a button to save us! Right on top of the white box, there should be an option: ‘eliminate infinite repition’, enable that, like this:

user uploaded image

Press ‘yes’ and then click on ‘save’ at the top left corner of the window before exiting. Click on the game screen to progress.

user uploaded image

Problem solved! No gibberish!

Other cases are such as Oukyuu Yasoukyoku’s, VNs that are so unknown that hook codes could make the game have extra letters.

user uploaded image

In my case, there’s the ‘W’ and the name of the one speaking that continuously appear on the dialog box.

user uploaded image

In text settings, you notice that very well. Because VNR has its own set of hook codes, it can often lead to errors. That’s why Oukyuu works better with another text hooker: AGTH. But thats a turorial for another time..

user uploaded image

In those cases, just ignore the extra letter and remember that at the end of each sentence lies the name of the speaker. Its still read-able!

And thats it! Thank you all for reading this tutorial, I hope it helped! If you have any questions, feel free to ask. I’ll try to answer them.

As for the games, they could all be obtained in the wonderful anime-sharing forum! It’s a friendly community where people share their games/anime and music! Try it out!

Источник

Отложенная смерть или как похоронить перспективу своей ленью


Кота с лампой – нет, держите мотылька.

Велика вероятность того, что не каждый из читателей знаком с понятием «визуальная новелла», а если и знаком, то уже пишет в комментариях восклицание по типу: «Снова эти виабушники на хабре!». Но если вам просто интересно прочитать историю одного недо-переводчика с небольшими навыками программирования и большими амбициями, то я вам её поведаю.

С чего все началось

В 2016 году я еще не имел полноценной работы связанной с программированием. На тот момент я работал удаленно в технической поддержке по всяким бухгалтерским программам. Клиентов у нас было не много, поэтому у меня было достаточно свободного времени.
Я брал некоторые заказы по сайтам, два раза в неделю посещал занятия по японскому языку. Очень уж мне нравилось звучание их языка (да чего уж таить — и сейчас нравится). Уже через полгода, имея «великое» знание азбук и горсти иероглифов, я хвастался этим в группах по аниме и визуальным новеллам. Наконец, в один из дней я получил сообщение от руководителя перевода одной визуальной новеллы с японского:


Скриншот первого сообщения

Для тех, кто не знаком с данным жанром игр, я вкратце опишу — это рассказ с картинками, с возможностью влиять на сюжет выбором реплик в диалогах. В некоторых экземплярах встречается какое-то подобие геймплея в перерывах между сюжетом, типа карточных игр, игр на ловкость и так далее. Зачастую, в подобных играх присутствуют «клубничные» моменты, а порой, и в значительном количестве. В русскоязычном сообществе особенно сильно прославилось «Бесконечное лето», с его героем-сычом и коммунистическим бэкграундом.

Ну и не забываем про Алису с бутылкой водки и Лену с ножом, да…

Перевод они делали через специальную программу — Visual Novel Reader. Настоящий монстр, как по количеству функционала, так и по прожорливости. Основной костяк был написан на питоне, который в свою очередь вызывал десяток других библиотек. Суть её работы заключалась в извлечении текста из новеллы прямо в процессе игры. Затем, с помощью множества встроенных словарей и машинных переводчиков, этот текст переводился, доводился до ума уже самим переводчиком и только потом сохранялся для остальных пользователей на сервере автора программы.


Пример основного интерфейса

Некоторое время поломавшись, я все-таки согласился помочь им с переводом, впрочем, толку от меня было мало. Работать переводчиком оказалось намного сложнее чем я мог себе представить. Если ранее, читая для себя, я мог просто пропускать то, что не понимал, то теперь приходилось обращаться к более опытным коллегам и выяснять: «а что там написано смесью иероглифов и двух азбук…?». Некоторое время я помучался со всем этим, но, когда нашел прибыльную подработку – забросил.

Хоть я и забросил, но за процессом перевода все равно продолжал наблюдать, очень уж мне приглянулись некоторые персонажи в новелле, хотелось почитать их на русском. Итак, спустя несколько месяцев возник прецендент: сервер, хранящий на себе все переводы, пользовательские словари и кучу всего прочего – умер. Или, вернее сказать, создатель просто забыл заплатить за домен. Казалось бы чепуха, но его не продлевали несколько дней. В русскоязычном и зарубежном комьюнити начали возникать волнения и опасения по поводу сложившейся ситуации. Именно тогда у меня возникли первые мысли о создании собственного сервера, тем более, что все исходники лежали в открытом виде, главное — найти нужные места в коде. Но, спустя еще некоторое время, домен чудесным образом заработал, и все забыли об этой ситуации. Однако, всеобщее счастье продлилось недолго…

Власть, которая и не снилась моему отцу…

Через несколько месяцев ситуация повторилась вновь. Так как это было уже не в первый раз, то все не сильно волновались, наверное, создатель на этот раз забыл заплатить за хостинг. Но вот прошла уже неделя, а сервер как лежал, так и лежит. Те, кто был знаком с создателем, пытались до него достучатся через известные каналы связи, но все было тщетно. Человек просто пропал…

В таком режиме прошел чуть ли не месяц, сервер продолжал быть в мертвом состоянии, а о создателе ничего не было слышно с тех самых пор. Программой по-прежнему можно было пользоваться, но только в качестве инструмента для перевода. Для простых обывателей, ради которых задумывался перевод это было, по сути, бесполезное приложение. В итоге, все активные переводы через эту программу были остановлены, а значит — настало время создавать свой сервер!

На тот момент моё понимание разработки было не выше уровня «чайника», и я понятия не имел о том, что такое IDE, фреймворки, да и вообще, мои познания были ограничены только вебом на уровне недо-джуна. И на тот момент для меня стояла неординарная задача – откопать в неизвестной мне архитектуре на неизвестном языке файл, который отвечает за отправку запросов на сервер, но в остальном я был абсолютно уверен в своих силах! Я не знал на какой домен отправляются запросы, а проверять подобного я еще не умел, но предположил, что домен в программе будет тем же, что и сам сайт, поэтому просто сделал поиск по всем файлам исходного кода программы. Подождав некоторое время, я получил немалый список упоминаний домена в коде и дальше, уже ручками, перебрал все файлы, пока не нашел нужное мне место. Подставил свой домен, запустил программу и убедился, что запросы идут куда нужно. Начало было положено!

Теперь возник вопрос с тем, какие данные посылает клиент, и какие ожидает. Мне пришлось потратить немало времени на изучение всего этого, и, должен сказать, мне крупно повезло. Субтитры, комментарии, словари, пользователи, игры… все это сохранялось в кэше программы в виде обычных xml файлов в первозданном виде. Просто бери, копируй на сервер и все заведется. Потратив несколько дней на написание, как я думал, гениального кода на стороне сервера, создание базы данных и бесконечные перезагрузки программы (у меня был слабый ноутбук, и перезагрузка занимала по несколько минут), я наконец-таки закончил работу над минимальным функционалом, и отдал на тестирование знакомой команде переводчиков. В течение дня мы тестировали, исправляли появляющиеся баги и в конце концов констатировали – сервер готов к работе! Но в данный момент сервер был абсолютно пустым, а на предыдущем были сохранены драгоценные данные. Благо, у пользователей все данные были сохранены в кэше, поэтому решение было очевидное – создать на сайте сервера форму для загрузки собственных субтитров и словарей.

Читайте также:  Билинк мини w bus инструкция

Для всего этого дела я создал отдельный поддомен на своем основном сайте, и через дичайшие костыли связал авторизацию между своим основным сайтом и сервером для VNR.

Что бы вы понимали весь ужас ситуации, этот глупец вместо того, чтобы создать отдельную базу данных, добавил таблицы в базу данных основного сайта. Я в то время думал создать многофункциональный портал… В итоге получился невероятный бардак, который теперь тяжело распутать. Даже я путаюсь, где используется логин основного сайта, а где логин VNR. Не будьте такими, как я 🙁

Т.к. я понятия не имел о паролях других пользователей, то пришлось на веру дать возможность людям самостоятельно указать свой старый логин, который они использовали в VNR и с которым потом будет связан аккаунт. И должен сказать – я рад что мне никто так и не написал о том, что его аккаунт угнали, моя вера в человечество спасена!

Разумеется, интерфейс также был переведен на английский язык, за что спасибо одному из переводчиков, ибо на тот момент в английский я не мог от слова совсем.

А вот так выглядят минималистичные формы для загрузки пользовательских субтитров и словарей:

Внимательный читатель заметит, что нигде нет кнопки выхода. Просто я поленился её добавлять…

Наконец, спустя пару недель разработки и отлова багов, сервер был отправлен в свободное плавание. Это был апогей того, что я делал до этого… Одно дело, когда ты делаешь что-то прикольное для своих соотечественников, но совсем другое, когда к ним подключаются еще и люди с остального мира! На форумах удивлялись тому, какую работу проделали русские, и самое главное – как у них это получилось?! Хотя ничего сложного в проделанной мною работе не было, я все же сильно возгордился своим достижением. Я – никто из «мухосранска», получил благодарности от иностранцев, я просто всемогущий!

Разумеется, на сервере еще оставались баги, и некоторое время я продолжал их исправлять и ловить плюсы от переводчиков на форумах и в дискорд-сервере, посвященному этой программе. Самое забавное, что мы настолько сильно засели в дискорде, что админ в конечном итоге создал нам отдельный канал для нашей болтовни, который существует и по сей день, хотя VNR упоминается теперь все меньше и меньше.

Брошенный на произвол судьбы

После восстановления сервера, я начал понемногу его дорабатывать. Сделал несколько фичей, добавил пару новых словарей для переводчиков. Но в конечном итоге, подустал всем этим заниматься и оставил сервер жить своей жизнью. Потом, спустя еще пару месяцев, мне удалось устроится в полноценную продуктовую ИТ-компанию, где из-за постоянных переработок ради повышения, я совсем позабыл о сервере.

Таким образом, прошло больше года и за это время я многому научился в программировании. В очередной раз открывая панель управления хостингом, я увидел поддомен сервера, на котором вертится VNR и решил, что его нужно передать другим, более достойным людям. Но, так как сервер был тесно связан с моим основным сайтом, который я тоже забросил, его было тяжело отделить. Но даже если и отделить, то возникает другая проблема: код, который я написал – полное дерьмо! Это самое мягкое что я могу о нем сказать. Все API-методы обрабатываются в единственном файле, написанном в процедурном стиле. Условия в условиях, добавляем туда циклы в несколько уровней, и получаем код, который невозможно читать. Даже сборка xml ответа происходит руками, потому что я где-то вычитал, что так будет менее ресурсоемко, нежели использовать для этого специальный инструмент. Я просто не мог выложить этот ужас в открытый доступ, мне глубоко стыдно за то, что там написано.

Поэтому я решил переписать сервер с нуля на нормальном фреймворке, а также, добавить немного функционала, связанного с социализацией. Например, страницы групп переводчиков с их контактными данными и ссылками на пожертвования. В перспективе, даже подумывал дать возможность переводчикам делать свои субтитры платными, как это сделано на том же «rulate». В течение месяца я потихоньку пилил новый сервер, но в итоге столкнулся с большой проблемой. Я хотел, чтобы все было идеально! «Это же open source, я должен сделать все максимально красиво!» — думал я. И в итоге, выгорел в бесконечной шлифовке одного и того же. А потом произошло повышение на работе, и по вечерам уже было далеко не до спасения старого сервера.

И вот, снова прошло полтора года и 11 мая серверу исполнится 3 года со дня его публикации. Я по-прежнему не переписал сервер на новый движок, а о создателе программы до сих пор ничего не слышно. Со мной все понятно, я ленивый мудак, который ничего не будет делать, если это не приносит ни выгоды, ни морального удовлетворения. Но вот насчет создателя, боюсь, что ничего радужного с ним не приключилось…

К концу статьи хотелось бы сказать: «Не будьте такими мудаками, как я, которые бросают дело на полпути!», но кто я такой, чтобы это говорить. Меня только радует, что есть и другие специалисты, которые делают чтение визуальных новелл проще. Сейчас активно развивается упрощенный аналог VNR-а – «Textractor», у него пока что нет такого крутого функционала, но зато он очень шустрый и легко расширяемый (правда, расширения могут очень сильно конфликтовать друг с другом). Не так давно я сделал для него отдельное расширение для получения переводов с сервера VNR, так что переводчики вполне могут создавать переводы в более сложной программе, а читатели – читать в легкой. Хотел также начать перенос словарей, но ни в какую не могу завести MeCab библиотеку под плюсами, буду рад, если найдется эксперт, который поможет в этом вопросе.

В заключение, немного статистики сервера на текущий момент:

• Всего созданных субтитров: 1,555,653
• Новых субтитров в месяц: 21 470,3
• Количество игр, имеющих хоть один субтитр: 1759
• Количество пользователей: 62 430

Источник

Visual novel reader инструкция

You can download Visual Novel Reader here.

  • Download Visual Novel Reader
  • Unzip the whole folder.
  • Run Update.exe
  • Run Visual Novel Reader.exe
  • Run your copy of CAGE-OPEN-
  • Switch back over to Visual Novel Reader. Click the magnifying glass icon to add new visual novel.
  • Proceed with “Select the window of running game” option-
  • Follow onscreen directions and proceed. CAGE-OPEN- should sync with Visual Novel Reader.
  • After the sync there should be several thousand “user comments” found. Those are the subs.
  • Make sure you turn off the ‘machine translation’ in the options tab . Otherwise it’ll display that instead of the subs.

22 responses

thank you so much!

I was able to get up to the fetching comments part, which means the side text says “fetching comments..” but then nothing happens :-(. No user comments show up! do you guys know what I’m doing wrong sorry for bothering you

Читайте также:  Клотримазол мазь инструкция для мужчин ногти

Hi! Sorry you’re having problems with the subs. : (

There are several things that could be causing the problem you mentioned; You might want to check out some of the fixes folks have suggested over in the Aarinfantasy thread. People have run into all kinds of problems have posted their solutions!

ok thank you! if i run into later problems i will definitely go there 🙂 somehow the problem solved itself though! I think it was because vnr was overloaded because too many people were on it, and they shut down the java server temporarily or something.

Okay, I’m really excited to play and I’m extremely grateful, but there are some things I need help with?

First, I was wondering if there was a way to turn off the voice that reads the text. And, after playing it for like a minute the English subtitles go away. D: What do I do?

To turn off VNR’s voice thing, go to the VNR menu at the left of your game screen. First see if the “Speak” option is highlighted, and if it is click it again to turn it off.

If that isn’t it it, click Menu –> Voice settings. In the box that pops up there should be a box that says disable up in the top right corner. That should turn it off.

As for the subtitles, it could be a lot of things…first make sure user comments and community subtitles are enabled in the options tab. Also click menu–>update shared subtitles.

And if it still doesn’t work you can try menu–>text settings then check ‘keep all threads from the selected dialog engine’ and see if that might work.

If that doesn’t do it, I’m not sure what to suggest and would recommend taking a look at the solutions users have discovered over in the Aarinfantasy thread.

first of all, thank you for your hard work on this game! unfortunately i have a problem (i don’t know if this is the right place to share, please let me know where i should direct this question) – whenever i load save game data, after a while a box like this opens up (here’s a screenshot)
[ http://tinypic.com/r/2v8pwdc/8 ]
and the game crashes. this hasn’t ever happened to me before – i was able to get through all of nitta just fine. but now when i try to replay i can’t. any advice?

Make sure your computer is set to Japanese locale! That is likely the problem.

I need some help D:
When I use the online setting there was no translation and when I do it manually like it was mentioned innthe youtube tutorial there are some text missing, do you have any solution for this? 😥
Thank you for your hardwork!

I’ve heard some people it was a matter of updating to a more current version of the game. Make sure it’s version 1.30 of the game, I believe someone who had that problem said that fixed it?

hi i updated vnr and cage kept crashing and i checked the problem signature thingie and it said the fault module was vnrhook.dll so i put in a random hook code, and the game started functioning except now the subs won’t show up because the hook code is not the correct code since its random ^^;
also every time i open text settings the game crashes
i checked the blgame proboard site but they didnt have a /H code for cage?
basically does cage have a /H code? im using this code right now /HS10@76B10BAB
it makes me really mad because it fetches all the comments but can’t extract the text from the game?? like its there it just won’t show up while i play
😦
sorry for bothering you!

Hello,I would like to know how put subtitles in my game, i dont understand japanese and would also like to learn it and would english in it.

hello, I hook up a game on VNR but I can’t see the english translation, although there’s a japanese words on the text box but the english won’t appear if not connected to the net.. mostly (Japanese CP392,Shift-JIS) if that option is on the window “Select Text thread” on the game wizard. Is there a way to have it translated even without the net?

Hello, I want to ask about the VNR. First, i already play the game before using VNR and it nothing wrong with it. The english translation is pop-up, but after i update the VNR suddenly the english translation was gone. The only left is the japan text in the table dialogue pop-up. Because i was confused, i try deleted the VNR and re-install it again using new file copy of VNR. But suddenly the table bubble for the translation dialog is gone. I try to open and close the VNR, reset the computer but nothing happen. Can somebody please help me? i really really really want to play this game. 😦 thank you for your help. I don’t know what i must to do next.

Hi there! I would try updating the subs and see if it just needs to grab them from the database again. If that doesn’t work, I suggest taking a look at the Aarinfantasy Cage thread; there is a troubleshooting guide and many people have posted solutions to VNR problems they have experienced. : )

Hi! VNR finds comments but the subs never pop up what should i do?

Hi
I’m having trouble with VNR, it keeps making the text bar disappear when ever i go to full screen mode for shin koihime moeshouden. Plus when i use the vnr full screen mode the pictures get slightly distorted. Can someone please help?

is this support win 8??

I heard vnr started again, so i downloaded it.tho upon using the magnifying glass icon to find the psp app ( which is running ) .it finds the programme but after next it says it fails to synchronize with the program.not just psp but other vn game too.i tried running it in admin too.itd be helpfull if someone could help ☹️.

In my case, I think the internet was disabled under Preferences. I enabled it, from the blue sidebar entered the subtitle editor and clicked the update button there, and then VNR finally loaded the 30k+ lines of subtitles.

Hi, I was trying to follow your instructions, does it still work for you? Unfortunately, it doesn’t seem to work anymore. I tried to go to the subtitle editor and used the update button, but nothing could be found. I was wondering whether you could share the subtitles from the folder: Visual Novel Reader\Caches\Subtitles

I’d greatly appreciate it!

Hi, I haven’t tested the latest VNR version, but I know in the past VNR has undergone some server migrations which ruined the existing subtitles. Here is my subtitle cache backup, hopefully this will fix the issue!

Источник